作者Eenie (Eenie)
看板MATLAB
標題[討論] 光學繞射繪圖疑問
時間Thu Jul 31 22:20:53 2014
請教各位大大,小弟是利用一平行光源照射一長方型狹縫,
並於狹縫及屏幕間放置一透鏡,狹縫至透鏡距離及透鏡至屏幕距離皆設定為f,
請問大大如果要將最終屏幕上Etotal的結果與E(xt,yt)
同時繪製出來需於程式末段加上哪些指令??
(目前小弟只有繪製出光源經過狹縫後的結果E(xt,yt))
(程式內容如有任何問題也請各位大大指教 謝謝!!)
clc
clear
lamda=632e-9; %波長
k=2*pi/lamda;
f=5;
a=3e-1;
l=6e-1;
bw2=zeros(101);%光源
bw2(49:51,49:51)=1;
Fix=fftshift(fft2(bw2));
x=linspace(-3,3,101);
y=linspace(-3,3,101);
xt=1;
for xc=-3:0.06:3
yt=1;
for yc=-3:0.06:3
E(xt,yt)=(((a*l)/(1i*lamda*f))*exp((1i*k)*(f+((xc^2)+(yc^2))/(2*f))))*
(Fix(xt,yt));
Etotal=E(xt,yt)*exp((1i*k*f)-((1i*pi*lamda*f)*
(((xc/(lamda*f))^2)+((yc/(lamda*f))^2))));
yt=yt+1;
end
xt=xt+1;
end
[xx,yy]=meshgrid(x,y);
mesh(xx,yy,abs(E));
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.251.157.122
※ 文章網址: http://www.ptt.cc/bbs/MATLAB/M.1406816456.A.163.html
推 aada:可以不用到迴圈 07/31 23:06
→ aada:簡單來說用fresnel transform 07/31 23:08
→ aada:*lens equation * inverse fresnel transform 07/31 23:08
推 aada:Etotal改成Etotal(xt,yt) 07/31 23:11
→ aada:詳細參考傅光4 5 章 07/31 23:12
推 dinosaurep: 用fft可以不需要迴圈 08/11 21:42