1、1MATLAB 大作业用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 轴:tT=2piw1.5T0.09s因此取0=t0,椭圆偏振光为左旋,即逆时针方向螺旋向上,和图形一致。m=-pi/2 时:程序t=0:0.0002:0.1;x=cos(100*t-pi/2);y=cos(10
2、0*t);plot3(x,y,t);仿真图如下图形分析当m=-pi/2 时,sinm0,椭圆偏振光为右旋,即顺时针方向螺旋向上,和图形一致。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 时,sinm0,椭圆偏振光为左旋,即逆时针方向螺旋向上,和图形一致。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 时,sinm0,椭圆偏振光为右旋,即顺时
3、针方向螺旋向上,和图形一致。3、总体程序画图动作4、遇到的问题(1)细节决定成败在以对象方式创建动画的时候:case 0 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); for k=0:0.0002:0.1; set(h,xdata,cos(100*k+m),ydata,cos(100*k),zdata,k) drawnow其中 markersize 的输入,写成了marksize ,导致程序无法运行,最后和课本重新对照
4、了一遍,发现了这个简单但又致命的错误,并进行了改正。细节决定成败,在这次作业中,每一步的程序都要仔细对照,琢磨,避免语法错误。(2) 书写格式的不同,结果不同case m=(pi/2)|(-pi/2) t=0:0.0002:0.1; plot3(cos(100*t+m),cos(100*t),t); h=line(0,1,0,colorred,marker,.,markersize,20,erasemode,xor); for k=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)下拉菜单的应用刚开始的时候,是每个情况的时候是单独画图,经过别人的指点后,应用了下拉菜单的格式,是程序简化,也减少了界面。