matlab光学仿真——菲涅尔透镜优化代码

其实设计菲涅尔的matlab程序可以算是使用matlab仿真的入门程序,在参考过别的历程程序后大多数程序采用了灰度图的思路,但是点的if判断语句后加入赋值很消耗时间,相同的数据通过储存后利用plot一次性画图可以节省几乎一半的时间而且代码长度还可以在x,y方向去掉一个。这样代码长度也缩减到13行,如果只是用于展示,从清晰度到响应速度,显然plot会更好用。

clear; 
tic
lam=600e-6;						    %波长600nm
R=3; 								%菲涅尔波带片半径为3mm
f=1000; 							%焦距1m
ym=R;xm=R; theta=0:pi/100:2*pi;
x=linspace(-xm,xm,1001);            %设置程序中x分为1001等分
for n=1:1001       
k=fix(x(n).^2./(lam.*f));  	        %求各点半波点数
    if mod(k,2)==1				    %判断半波带数奇偶,为奇数则涂黑
       x1(:,n)=x(n)*cos(theta); y1(:,n)=x(n)*sin(theta);
    end
end
       figure(1)
       plot(x1,y1,'k-')
toc

你可能感兴趣的:(matlab光学仿真——菲涅尔透镜优化代码)