matlab-椭圆偏振光矢量末端的三维轨迹进行仿真.doc
《matlab-椭圆偏振光矢量末端的三维轨迹进行仿真.doc》由会员分享,可在线阅读,更多相关《matlab-椭圆偏振光矢量末端的三维轨迹进行仿真.doc(8页珍藏版)》请在冰豆网上搜索。
1
MATLAB大作业
用MATLAB对椭圆偏振光矢量末端的三维轨迹进行仿真。
要求:
Ex=cos(wt+a1)
Ey=cos(wt+a2)
t取一个半周期左右
m=a1-a1
做出m=0,pi/2,-pi/2,pi/4,-pi/4时的轨迹图;区别分左/右旋;并与
理论作对比,对理论进行验证。
步骤:
1.确定参数
X轴:
Ex=cos(100t+m)
Y轴:
Ey=cos(100t)
Z轴:
t
∵T=2×pi÷w
∴1.5T≈0.09s
因此取0<=t<+0.1
2.程序与相应图形分析
m=0时:
⑴程序
t=0:
0.0004:
0.1;
x=cos(100*t);
y=cos(100*t);
plot3(x,y,t);
⑵仿真图如下
⑶图形分析
当m=0时,Ex=Ey,和矢量末端的轨迹在ExEy平面上的投影是经过坐标原点的直线,和图
形一致。
m=pi/2时:
⑴程序
t=0:
0.0002:
0.1;
x=cos(100*t+pi/2);
y=cos(100*t);
plot3(x,y,t);
⑵仿真图如下
⑶图形分析
当m=pi/2时,sinm>0,椭圆偏振光为左旋,即逆时针方向螺旋向上,和图形一致。
m=-pi/2时:
⑴程序
t=0:
0.0002:
0.1;
x=cos(100*t-pi/2);
y=cos(100*t);
plot3(x,y,t);
⑵仿真图如下
⑶图形分析
当m=-pi/2时,sinm>0,椭圆偏振光为右旋,即顺时针方向螺旋向上,和图形一致。
m=pi/4时:
⑴程序
t=0:
0.0004:
0.1;
x=cos(100*t+pi/4);
y=cos(100*t);
plot3(x,y,t);
⑵仿真图如下
⑶图形分析
当m=pi/4时,sinm>0,椭圆偏振光为左旋,即逆时针方向螺旋向上,和图形一致。
m=-pi/4时:
⑴程序
t=0:
0.0004:
0.1;
x=cos(100*t-pi/4);
y=cos(100*t);
plot3(x,y,t);
⑵仿真图如下
⑶图形分析
当m=-pi/4时,sinm>0,椭圆偏振光为右旋,即顺时针方向螺旋向上,和图形一致。
3、总体程序
画图
动作
4、遇到的问题
(1)细节决定成败
在以对象方式创建动画的时候:
case0
t=0:
0.0002:
0.1;
plot3(cos(100*t+m),cos(100*t),t);
h=line(1,1,0,'color','red','marker','.','markersize',20,'erasemode','xor');
fork=0:
0.0002:
0.1;
set(h,'xdata',cos(100*k+m),'ydata',cos(100*k),'zdata',k)
drawnow
其中markersize的输入,写成了marksize,导致程序无法运行,最后和课本重新对照了一遍,发现了这个简单但又致命的错误,并进行了改正。
细节决定成败,在这次作业中,每一步的程序都要仔细对照,琢磨,避免语法错误。
(2)书写格式的不同,结果不同
casem==(pi/2)|(-pi/2)
t=0:
0.0002:
0.1;
plot3(cos(100*t+m),cos(100*t),t);
h=line(0,1,0,'color''red','marker','.','markersize','20','erasemode','xor');
fork=0:
0.0002:
0.1;
set(h,'xdata',cos(100*k+m),'ydata',cos(100*k),'zdata',k)
drawnow
end
其中m==(pi/2)|(-pi/2)这样的写法无法执行,改为case{pi/2-pi/2}
就可以执行,逻辑表达式的错误书写
(3)回调函数的设置
对hObject,eventdata,handles三个参数的说明
(4)下拉菜单的应用
刚开始的时候,是每个情况的时候是单独画图,经过别人的指点后,应用了下拉菜单的格式,是程序简化,也减少了界面。