妳對照單縫衍射光強分布公式看這個程序,就簡單了,程序中用image函數仿真繪制衍射圖樣,用plot函數繪制光強;
沒有主函數,程序前部分生成仿真單縫衍射所需要的光強分布數據(51個點數據),後部分是用image,plot兩個函數(MATLAB自己的)仿真圖像;
用subplot將圖形窗口分成兩塊,第壹塊仿真繪制衍射圖樣,第二塊用plot函數繪制光強。
關鍵語句,我在後面進行了註釋!
lam=500e-9;
a= 1e-3; f=1;
xm= 3*lam*f/a;
nx= 51;
xs=linspace(-xm,xm,nx);%在-xm到xm之間均勻產生51個數據
np=51;
xp=linspace(0,a,np);%在0到a之間均勻產生51個數據
%以上語句創建若幹變量,與特定公式有關
for i=1:nx
sinphi= xs(i)/f;
alpha=2*pi*xp*sinphi/lam;
sumcos=sum(cos(alpha));
sumsin=sum(sin(alpha));
B(i,:)=(sumcos^2+sumsin^2)/np^2;
end
%以上語句為for循環,計算51個位置的衍射光強,放在B向量中
N=255;
Br=(B/max(B))*N;%歸壹化到對應像素灰度
figure(1);
subplot(1,2,1)
image(xm,xs,Br);%仿真衍射圖像
colormap(gray(N));
subplot(1,2,2)
plot(B,xs);%仿真單縫衍射光強