24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1061  |  回复: 0

couronne

新虫 (初入文坛)

[交流] 在写matlab关于基尔霍夫单缝衍射时遇到了,向大家问题求助下

我的一个目的是想模拟线光源的基尔霍夫双缝衍射图案,想先从单缝衍射编写matlab,然后在乘以干涉因子得到双缝衍射图案。
现在上面写的是单缝衍射的matlab语言。
上面是我按照 书本上的基尔霍夫衍射公式遍公式 ,先求出取线光源上一点的电光源发出相干光通过一定大小的孔后的衍射图像,然后在把线光源上每个非相干光源产生的衍射图案的光强相叠加。
只求出了关于光强的向量。
所以最后遇到的问题有:
1求出I光强分布后怎么能用坐标表示出来,怎么得到I光强的灰度图?
2还有书本中使用积分求E的,而我是采用间隔取点(间距值的大小不好取)来求E,能优化成积分形式吗?

lamda=500e-9;%波长
L=1;%线光源的衍射屏的垂直距离
D=10;%衍射孔到观察面的垂直距离
k=2*pi/lamda;
c=1/1j*lamda;
ym=2.5*lamda*D/d;%线光源长度
ys=linspace(-ym,ym,2000);
d=1e-3;%衍射孔半径
A=1;%E的振幅
um=2.5*lamda*D/d;%观察面
us=linspace(-um,um,2000);

for y=-ym:1;ym
   
I=zeros(2000,1);

for n=-1e-3:1e-9:1e-3%衍射孔上间隔取点
   
E=zeros(2000,1);

R=sqrt((y-n)^2+L^2);%点光源到衍射孔面上的距离

r=sqrt(d^2+(us-n).^2);%衍射孔到观察面的距离

E=(A/R)*exp(1j*k*R);

theta=[(L/R)+(D./r)]/2;%K因子

dE=c*E*theta.*exp(i.*k.*r)./r;

E=E+dE;%小孔发出的子波到观察面的叠加
end

I=I+(E).*2;%非相干光的光强叠加

end
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 couronne 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见