实验一 数据的可视化:光纤横截面上的场分布模拟
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一数据的可视化:光纤横截面上的场分布模拟
一、实验目的
MATLAB不仅在数值计算方面独占鳌头,而且在数据可视化方面也是功能强大。MATLAB可以给出数据的二维、三维甚至四维的图形表现。通过对图形的线型、立面、色彩、渲染、光线、视角等的控制,可以把数据的特征表现的淋漓尽致。本次实验拟通过对光纤横截面上的模场分布进行模拟,使大家熟悉MATLAB常用的二维、三维绘图函数以及和绘图有关的命令,学会如何用不同的色彩来表示数值的大小,同时对单模、多模光纤的模场分布规律建立感性认识,为更好的学习后续专业课程打基础。
二、MATLAB的常用绘图函数
1. 二维绘图函数
MATLAB中最常用的二维绘图函数是plot函数,其调用格式如下:
①plot ( X, Y, 's')
●若X、Y为同维向量,则分别以X、Y中的元素为横、纵坐标绘制曲线;
●若X为向量,Y是有一维和X等维的矩阵,则绘制多个不同色彩的曲线,曲线数
等于Y的另一维;
●若X为矩阵,Y为向量,情况和上相同;
●若X,Y为同维矩阵,则以X,Y对应的列元素为横、纵坐标绘制曲线族,曲线条
数等于矩阵的列数;
●s是字串,是用来指定线型、色彩的选项。各种可选项如下表所示
②plot ( X1, Y1, 's1',X2, Y2, 's2',…)
同时绘制多个曲线,每个绘线三元组(X, Y, 's')的结构和作用与plot(X, Y, 's')相同,不同的是三元组之间可以互不相关。
例1:t=0:0.01:2*pi; y1=t.*sin(t.^2) ; y2=exp(t)+cos(t.^2) ; plot (t, [y1 ; y2], '-r ' ) ;
% 或者plot(t, y1,'-r', t, y2,'-.m')
其他的二维绘图函数如ezplot,可用于绘制隐函数图、参数绘图,其调用格式:
函数说明
ezplot(‘f’,[a, b]) 绘制隐函数f(x,y)=0的图形,横坐标范围[a,b] ezplot(‘f’,[xmin,xmax,ymin,ymax]) 绘制隐函数f(x,y)=0的图形,横坐标范围
[xmin, xmax], 纵坐标范围[ymin, ymax] ezplot(‘fx’, ‘fy’, [tmin,tmax]) 绘参数图,绘出fx(t), fy(t), t的范围
[tmin,tmax]
例2:画圆:x2+y2=R2( R=5µm )
a=5*1e-06; h1=ezplot('x^2 + y^2 - (5*1e-6)^2',[-a,a]); % h1 返回图形的句柄(标识)
2. 三维绘图函数
①画三维曲线图—plot3函数
调用格式:
plot3(X1, Y1, Z1,’s1’, X2, Y2, Z2,’s2’, ...),除包含第三维之外,用法与plot函数相同。
②画三维网格图—mesh函数
MATLAB的三维网格图的形成原理:在x-y平面上指定一个矩形区域,采用与坐标轴平行的直线将其分格,计算网格点上的函数值,即z轴的值,得到三维空间中的数据点;将这些数据点分别用处于x-z面或其平行平面内的曲线和处于y-z面或其平行平面内的曲线连接,即形成三维网格图。
调用格式:
●mesh(X, Y, Z, C)
X, Y, Z, C为矩阵,X,Y存放格点的横、纵坐标,可由meshgrid函数生成:[X, Y]=meshgrid(x,y),x,y为向量,指定画图的矩形区域。C是指定颜色的数据矩阵。
●mesh(X, Y, Z) (常用)
同上,只是颜色矩阵C=Z,故网格图的颜色和网格的高度(即z轴的的值)成正比。
例3:
x=linspace(-2,2,30);
y=linspace(-2,2,30);
[xx,yy]=meshgrid(x,y);
zz=xx.*exp(-xx.^2-yy.^2);
mesh(xx,yy,zz)
meshgrid函数将向量x,y指定的矩形区转化为二维
矩阵xx,yy(二维网格点坐标),以供三维绘图所需
③画三维曲面图—surf函数
调用格式与mesh函数一样,只是mesh函数
所绘的网格图其格线着色,补片(格线间的空白区,网格面)不着色,如例3图所示;而surf
所绘曲面图,其格线都为黑色,补片着不同的颜色(具体由颜色矩阵C指定),如下图所示。例4:(1-4条命令同例3); surf(xx,yy,zz); colorbar;
其中,colorbar命令的作用是在图形的右边加一竖直的颜色条,从中可见曲面图补片的颜色
和z轴值成正比。
对于surf图,可用shading命令进行着色的细
化处理:
shading flat 曲面图的某整个补片都着一种颜
色,颜色取自该补片四顶点数据中下标最小的那点
的颜色;
shading faceted 在flat用色基础上,再在补片
的四周勾画黑色网格线,是MATLAB的默认设置。
如上图所示。
shading interp 曲面图补片上各点的颜色由该
补片四顶点的颜色经二次线性插值得到,这种方
法用色细腻,但计算量大。如下图所示。
由此可此,shading flat或interp都将去掉曲面
图中的黑色网格线。
3. 矢量场图
矢量场图(又称速度图)在工程中的应用很广泛。MATLAB中绘制矢量图的函数有compass、feather、quiver、quiver3这里仅介绍quiver和quiver3。
①quiver函数
绘制二维矢量场图,使用格式:quiver(X, Y, U, V, S, ’LSC’)
其中,X,Y,U,V为大小相同的向量或矩阵,X,Y指定每个矢量的起始点坐标,U,V指定每个矢量的x和y分量。S是指定所画箭头大小的参数,默认S=1,若S=2,则箭头大小加倍,若S=0.5,则缩小一倍,若S=0,则箭头大小不可调整。第6个参数LSC是个字串,用于指定合法的线型和颜色(具体参见上表)。
例5:绘制标量函数sin(x)*cos(y)的梯度(矢量)图
[xx,yy]=meshgrid(-2:0.2:2,-2:0.2:2);
zz=sin(xx).*cos(yy);
[u,v]=gradient(zz);
%计算梯度,输出u、v是二维梯度矢量的x、y分量
quiver(xx,yy,u,v)
结果如右图所示。
②quiver3函数
用于三维矢量图绘制,除了包含第三维的信息之外,用法和quiver函数相同: