实验一 数据的可视化光纤横截面上的场分布模拟.docx
- 文档编号:10323295
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:20
- 大小:422.88KB
实验一 数据的可视化光纤横截面上的场分布模拟.docx
《实验一 数据的可视化光纤横截面上的场分布模拟.docx》由会员分享,可在线阅读,更多相关《实验一 数据的可视化光纤横截面上的场分布模拟.docx(20页珍藏版)》请在冰豆网上搜索。
实验一数据的可视化光纤横截面上的场分布模拟
实验一数据的可视化:
光纤横截面上的场分布模拟
一、实验目的
MATLAB不仅在数值计算方面独占鳌头,而且在数据可视化方面也是功能强大。
MATLAB可以给出数据的二维、三维甚至四维的图形表现。
通过对图形的线型、立面、色彩、渲染、光线、视角等的控制,可以把数据的特征表现的淋漓尽致。
本次实验拟通过对光纤横截面上的模场分布进行模拟,使大家熟悉MATLAB常用的二维、三维绘图函数以及和绘图有关的命令,学会如何用不同的色彩来表示数值的大小,同时对单模、多模光纤的模场分布规律建立感性认识,为更好的学习后续专业课程打基础。
二、MATLAB的常用绘图函数
1.二维绘图函数
MATLAB中最常用的二维绘图函数是plot函数,其调用格式如下:
1plot(X,Y,s)
●若X、Y为同维向量,则分别以X、Y中的元素为横、纵坐标绘制曲线;
●若X为向量,Y是有一维和X等维的矩阵,则绘制多个不同色彩的曲线,曲线数等于Y的另一维;
●若X为矩阵,Y为向量,情况和上相同;
●若X,Y为同维矩阵,则以X,Y对应的列元素为横、纵坐标绘制曲线族,曲线条数等于矩阵的列数;
●s是字串,是用来指定线型、色彩的选项。
各种可选项如下表所示
2plot(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命令进行着色的细化处理:
Øshadingflat曲面图的某整个补片都着一种颜色,颜色取自该补片四顶点数据中下标最小的那点的颜色;
Øshadingfaceted在flat用色基础上,再在补片的四周勾画黑色网格线,是MATLAB的默认设置。
如上图所示。
Øshadinginterp曲面图补片上各点的颜色由该补片四顶点的颜色经二次线性插值得到,这种方法用色细腻,但计算量大。
如下图所示。
由此可此,shadingflat或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函数相同:
quiver3(X,Y,Z,U,V,W,S,’LSC’)
X,Y,Z指定矢量的起始点坐标,U,V,W指定矢量的x,y,z分量。
4.图形对象的颜色映像
在MATLAB中,图形的颜色是作为第四维引入的,即在x,y,z轴的基础上引入一个颜色轴(caix),因此MATLAB图形的颜色其实是伪色彩(pseudocolor)。
每一种颜色可以使用[RGB]基色三元行数组来表示。
数值元素R、G、B在[0,1]区间取值,分别表示红、绿、蓝三基色的相对亮度。
通过对R、G、B大小的设置,可以调配出不同的颜色,例如:
红色[100];绿色[010];蓝色[001];灰色[0.50.50.5];黑色[000];白色[111]等。
由m个不同的[RGB]三元行数组构成的m×3的矩阵就定义了一种色图(colormap,也称调色板或颜色表)。
例如矩阵[100;010;001]定义了一个颜色表,它由红、绿、蓝三种颜色构成。
MATLAB提供了一些现成的色图矩阵,如‘jet’代表的是一种蓝头红尾饱和色值的颜色表,‘hot’代表一种黑红白黄浓淡色的颜色表,这些色图矩阵可以在帮助系统中查到(helpcolormap命令)。
需要注意的是,代表颜色表的色图矩阵的维数必须是m×3,且元素值在0~1之间,m是矩阵的行数,矩阵的每一行定义了一种颜色,因此m代表了颜色表中颜色的数目,第k(1≤k≤m)行则对应着颜色表的第k个颜色。
MATLAB的每个图形窗口(使用绘图命令之后自动弹出)只能有一个颜色表(色图)用于绘图。
使用colormap命令可以指定图形窗口所使用的颜色表,其使用格式:
colormap(cmap)
cmap是一个m×3的矩阵。
例如
>>colormap(jet)%使用MATLAB提供的色图矩阵jet作为当前图形窗口的颜色表
再如:
>>colormap(rand(128,3))
%使用rand函数生成色图矩阵,定义了128色的颜色表
那么,在MATLAB中是如何使用一个颜色表中的颜色来进行绘图、着色?
这就是所谓的颜色映射(Mapping)问题了。
在许多绘图函数中都提供了一个用来指定颜色的输入参数C,如前面的surf(X,Y,Z,C),C是一个和X,Y,Z同维的数值矩阵(称CData),其作用是通过映射的方式来指定图形各个部分使用的颜色。
注意C不是上面的色图矩阵cmap,因为C矩阵的大小不受m×3的限制而且元素值也不受0~1区间的限制。
颜色映射的原理可以用右图说明:
其中,[cmin,cmax]定义了颜色轴的范围(如同[xmin,xmax]定义了x轴的范围),等于(或小于)cmin的数值映射到颜色表中的第一个颜色,等于(或大于)cmax的数值映射到颜色表的最后一个颜色,处于cmin和cmax之间的数值C按照如下规律线性映射到颜色表中的其他颜色:
k=fix((C-cmin)/(cmax-cmin)*m)+1(不包括C=cmax)(*)
则映射到颜色表的第k个颜色。
函数fix(x)取x的整数部分。
除非特别指定,MATLAB默认CData(指定颜色的数据矩阵,即参数C)的最小值为cmin,最大值为cmax。
也可通过caxis([cmin,cmax])命令改变颜色轴的范围[cmin,cmax]。
因此CData中元素值等于(或小于)cmin者被映射为颜色表的第一个颜色,而等于(或大于)cmax者则被映射为颜色表的最后一种颜色,其他的则按上述规律映射。
因此,图形的颜色实际上是利用绘图命令中输入的CData数据,按照其数值的大小以映射的方式来选择使用颜色表中的颜色。
例6:
三维球面绘制。
[X,Y,Z]=sphere;%绘制单位球的函数,输出为球面点的坐标
C=Z;colormap(jet)%指定当前图形窗口的颜色表
surf(X,Y,Z,C);axisequal%使x,y,z轴刻度相同,否则球体看起来像椭球
图形如左下图所示。
若在surf命令后添加:
caxis([-10])%将颜色轴的范围由默认的[-1,1]修改为[-1,0]
则上半球着单一的暗红色(右下图),因为z>0的值均被映射到颜色表jet的最后一个颜色[0.500]了。
注意:
函数plot、plot3以及contour和contour3(分别画二维和三维等高线函数)不使用颜色映像,即不接受Cdata参数,也不使用当前的颜色表,它们只使用列在plot颜色和线型表中的颜色(参见1页的表格)
例7:
>>t=0:
0.01:
2*pi;
>>plot(t,sin(t),'linewidth',3,'color',[100])
%使用线宽为3像素的红色曲线描图
5.二维伪彩色绘图—pcolor函数
pcolor是专门绘制二维伪色彩图形的函数。
它首先在二维平面内绘制出矩形(或非矩形)单元阵列,然后使用输入的CData数据以映射的方式对各个矩形单元指定颜色。
一般的使用格式:
①pcolor(C)
C为矩阵。
首先利用C矩阵中每相邻的4个元素绘制矩形单元,再将C矩阵映射到颜色表以指定每个单元的颜色。
映射时,C的最后一行和最后一列不使用,元素C(i,j)的值指定第i行j列的矩形单元的颜色。
例8:
>>colormap([1,0,0;0,1,0;0,0,1])%定义了只有RGB三基色的颜色表
>>C=[1.5,1,-2.5,-1;0,-1.5,3,2;0.5,2.5,2,-1;-2,-1,0,1]%CData
>>pcolor(C)
>>axisij
运行结果为图中右上角部分。
映射规则是将C中的最小值-2.5映射到颜色表的第一个色红色,最大值+3映射为第3个色蓝色。
将C阵的最后1行和列划掉后,第1行的3个元素值分别指定第1行的3个矩形单元的颜色,按映射规则,相应的单元色是B、G、R,以此类推。
(例如,C(1,1)=1.5,按(*)式k=3,故映射为蓝色)
②pcolor(X,Y,C)
X,Y,C是同维的矩阵,X,Y指定单元的顶点坐标。
例9:
在极坐标系中绘制半径为5µm的圆形伪色彩图
>>a=5*1e-06;r=linspace(0,a,8);
>>theta=linspace(0,2*pi,12);
>>X=cos(theta’)*r;Y=sin(theta’)*r;
%转化为直角坐标,X,Y扇形顶点坐标
>>C=randn(size(X));%C要和X,Y同维
>>pcolor(X,Y,C);axisequal
说明:
可将极坐标下的r维(径向)和theta维(角向)看成x维和y维,则C(i,j)指定第i行j列的扇形颜色,此时的行方向指r增加的方向,列方向指theta增加方向;
MATLAB中,默认的着色方式是shadingfaceted,即每个单元着单一的颜色,而且勾画黑色格线,因此若在程序中使用shadingflated命令,着色方式不变,但能去掉黑色格线。
6.图形的控制与修饰
(1)坐标轴的控制函数axis,调用格式如下:
axis([xmin,xmax,ymin,ymax,zmin,zmax])
用此命令可以控制坐标轴的范围。
与axis相关的几条常用命令还有:
axisequal 严格控制各坐标的刻度使其相等
axissquare 使绘图区为正方形
axison 恢复对坐标轴的一切设置
axisoff 取消对坐标轴的一切设置(轴不可见)
axistight 使图形的绘图区紧贴图形窗口
(2)gridon 在图形中绘制坐标网格
gridoff 取消坐标网格.
(3)图形的标注
xlabel,ylabel,zlabel分别为x轴,y轴,z轴添加标注。
title为图形添加标题。
以上函数的调用格式大同小异,我们以xlabel为例进行介绍:
xlabel('标注文本','属性1','属性值1','属性2','属性值2',…)
这里的属性是标注文本的属性,包括字体大小(FontSize)、字体名(FontName)、字体粗细(FontWeight)等。
如:
xlabel(’时间t(单位秒)’,’FontSize’,12,’FontName’,...
’隶书’,’FontWeight’,’Bold’);
(4)holdon
在当前坐标轴设置的基础上,往当前图形窗口中添加多幅图形;MatLAB在绘图时,后画的图形在显示时会自动擦除原来的图形以显示新的图形,采用该命令后,将保留原有图形。
常用于多幅图形的比较。
holdoff关闭上述功能。
(5)subplot图形窗口的分割函数
格式:
subplot(m,n,p),将图形窗口分割成m×n的子窗口,并在第p个窗口绘制图形,利用该命令可以在一个图形窗口中同时显示多幅小图。
三、实验原理
如图所示,光纤的横截面有两层介质,里面的是芯层,外面的是包层,芯层折射率稍大于包层折射率,由于全反射,光主要约束在芯层中传播。
为叙述方便,约定光的传播方向(i.e.光纤的轴向)为z轴方向,并先定义几个光纤参数:
1.相对折射率差
其中n1、n2分别是芯层和包层的折射率,这里只考虑n1、n2均为常数的阶跃折射率光纤。
实际的光纤的很小,一般小于1%,因此也称为弱导光纤。
2.归一化径向相位常数U和归一化径向衰减常数W
(2)
其中,a是光纤芯层半径,一般单模光纤的a=2~5µm。
是光纤中电磁波的传播常数。
k0=2/0是真空中的波数。
3.归一化频率V
它概括了光纤的结构参数(a,,n1)以及工作波长(包含在k0中),是一个重要的综合性参数,光纤的很多特性都与归一化频率V有关。
4.光纤横截面上的场的标量解
在弱导光纤中的电磁波类似于一个横电磁波(TEM波),它的横向场分量Et、Ht要远大于纵向场分量Ez、Hz,而且横向场分量是线偏振的,因此总是可以把电场的横向分量取为y轴方向,即Et=Ey,它满足标量赫姆霍兹方程:
其中,n是介质折射率(芯层中取n1,包层中取n2)。
在圆柱坐标系中利用分离变量法求解
(2)式,并使用电磁场的边界条件,可以解出电场的横向分量Ey:
其中,r是到光纤中心(z轴)的距离,m是整数,Jm和Km分别是m阶贝塞尔函数和m阶第二类修正的贝塞尔函数。
是极角。
横向磁场只包含Hx分量,由于横向电场与横向磁场的比等于波阻抗,故可由Ey计算出Hx:
其中Z0=120为真空波阻抗。
再由麦氏方程组可求出场的纵向分量Ez、Hz:
5.特征方程与LPmn模
场解(5)~(8)式中还有两个参量U和W未知,它们可由光纤的本征方程求出。
利用电磁场的边界条件Ez1=Ez2可以得到本征值方程:
(9)、(10)两式等价。
利用(9)或(10)式可以求出U(或W),再由(3)式求出W(或U),然后代入(5)~(8)式计算截面上的场分布。
特征方程是超越方程,只能靠计算机数值求解。
显然特征方程的解U(或W),从而横向场解,与贝塞尔函数的阶数m有关。
此外,特征方程的解也和贝塞尔函数的根有关。
比如在大V值的情况下,特征方程可以简化为
,故此时U即是贝塞尔函数的根,但贝塞尔函数的根通常有若干个,如表2所示。
所以U=µmn,µmn代表m阶贝塞尔函数的根,n是根序号。
可见U的解除了和m有关之外也和贝塞尔函数的根序号n有关,从而光纤的场解(即模式)也和m及n有关,不同(m,n)值给出不同的场解,即不同的模式。
因此就将每一组(m,n)值对应的场解称为一个模式,记作LPmn模,意思是线偏振模(LinearlyPolarization),它表示弱导光纤中的模式基本上是线偏振模。
(m,n)也称为模指数。
这里2m等于角向亮斑(极大值)数目,n等于径向亮斑数目。
通常LPmn模的U值是在m-1阶贝塞尔函数的第n个根和m阶贝塞尔函数的第n个根之间变化,这一点对于数值求解特征方程很重要,因为对于有多个根的方程的求解,必须指定求解的区间,才能得到正确的根解。
表2:
贝塞尔函数的Jm根
6.LPmn模的截止条件、归一化截止频率和单模传输条件
当某一模式截止时,它就不能沿光纤传输了。
可以用径向归一化衰减常数W来衡量某一模式是否截止。
对于导波模(也称约束模,指约束在光纤中有效传输的模式),场在纤芯外是指数衰减的,保证了场约束在芯层,此时W2>0;当W2<0时,W为虚数,不再代表衰减常数,即场在纤芯外不再衰减了,也就不再约束在芯层中传播了,这种波叫做辐射波。
而W2=0正好是临界状态,以此作为导波模被截止的条件,此时的W记做Wc,相应的U和V值记做Uc和Vc,并将Vc称为归一化截止频率。
由(3)式不难得到:
在截止条件(W=0)下,特征方程可以简化为
即Uc是m-1阶贝塞尔函数的根。
对于LP01模(m=0,n=1),截止时由(12)式得Vc=Uc=0,说明这种模式永不截止,是光纤中的最低阶模,也称基模。
第二个归一化截止频率较低的模式是LP11模式,称为二阶模,其归一化截止频率Vc=Uc=2.40483。
当光纤中只有基模工作而其他模式均被截止时,就称为单模光纤。
要保证单模传输,必须要求光纤的归一化频率小于二阶模LP11的截止频率Vc,即让二阶模截止:
上式就是单模传输条件。
根据(3)式,单模光纤的结构参数(a,,n1)就必须受到约束,比如纤芯半径a通常要较小。
同样地,若要LPmn模式不被截止,则要求归一化频率V大于该模式的截止频率,即
7.LPmn模的功率密度以及功率
平均坡印廷矢量Sav的大小就代表功率密度,使用
以及场解(5)~(8)式,可以计算出光纤横截面上的功率密度(Sav)近似为:
平均坡印廷矢量对横截面积分便得到光纤中的功率P:
令P=1(归一化功率),可算出以上各式的常数A:
8.阶跃光纤中的模式数量
以M表示光纤中能同时传播的模式数量,则有
可见M与归一化频率V的平方成正比,因此,纤芯越大,折射率差越大,光纤中传播的模式数就越多。
四、实验内容
1.计算横向电场Ey分布并将结果可视化显示
分别计算单模光纤和多模光纤中LP34模的横向电场Ey分布并将结果可视化。
给定实验参数:
工作波长0=1.55µm;纤芯折射率n1=1.5;相对折射率差=0.9%;纤芯半径a按(a)、(b)中有关要求输入,包层半径取为2a。
要计算横向电场Ey,按(5)式必须先计算归一化径向相位常数U和归一化径向衰减常数W(另一常数A由(17)式计算),这就需要先求解特征方程(9)或者(10)式,可以先用(3)式将方程化为只含一个变量U。
使用Matlab内建函数fzero可以求解特征方程:
X=fzero(f,X0)作用是在X0附近搜索函数f(x)的零点(根),返回值X为函数f的根。
f是函数的句柄,可按照匿名函数的创建方法实现。
对于单模光纤,基模LP01模的U值介于[0,2.40483]之间,因此X0可取其间的某个值,比如1;对于多模光纤,当计算LP34模时,根据第三部分的分析,其U值处于2阶贝塞尔函数的第4个根和3阶贝塞尔函数的第4个根之间,即区间[14.796,16.22]内,因此X0可取其间的某个值,如15。
求出模式的U值后,使用(3)式算出W,代入(5)式计算Ey。
(5)式中的m阶贝塞尔函数Jm和m阶第二类修正的贝塞尔函数Km可以使用Matlab的内建函数besselj和besselk计算:
J=besselj(NU,Z)计算Jm,输入参数NU指定贝塞尔函数的阶数,Z指定变量,J返回计算结果;
K=besselk(NU,Z)计算Km,输入参数NU指定第二类贝塞尔函数的阶数,Z指定变量,K返回计算结果;
例如,besselj(0,U*r/a)计算J0(Ur/a)的值。
(a)单模光纤
单模光纤只有基模LP01(i.e.模指数m=0,n=1)存在,应满足单模条件(13)式:
V<2.40483,再根据(3)式,在给定实验参数的情况下,就要求芯径a有限制。
输入参数a后,按上述方法可计算出横向电场Ey。
按以下2种途径将数值结果可视化显示:
①使用二维伪彩图绘制函数pcolor(X,Y,C)
首先将光纤横截面划分为若干个扇形单元,X,Y矩阵储存扇形的顶点坐标,电场的计算结果Ey赋给矩阵C(i.e.C=Ey) ,编程时要注意X,Y,C维数要一样。
然后定义颜色表,使用pcolor命令,就可以将截面上每点的电场值通过颜色映射的方式,按值大小分别以不同的色彩显示出来,如附图右半部分所示 :
图中第一排使用了256个灰度级的灰度图显示,颜色表定义句 :
colormap([gray(256)]);
图中第二排使用了256个不同饱和度
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验一 数据的可视化光纤横截面上的场分布模拟 实验 数据 可视化 光纤 横截面 分布 模拟