| 查看: 3681 | 回复: 2 | ||
[求助]
请教:关于matlab的菲涅尔衍射FFT计算仿真
|
|
菲涅尔衍射可看成 输入函数与相位因子乘积 的傅里叶变换,应用FFT方法可以快速计算输入函数的菲涅尔衍射。 但是在编程过程中遇到采样频率和衍射场的空间频率不知道怎么确定的问题,例如,在以下代码中,保持衍射狭缝宽度不变,改变采样数或者改变观察屏的范围都会导致衍射图样的变化,这是不正确的。 在这里想请教各位大牛,应该如何完善下面的菲涅尔衍射计算的程序才能得到正确的计算结果? 非常感谢 % 本程序用于计算宽度为0.2mm的狭缝的菲涅尔衍射 clear all;close all; lamda = 0.635e-3; % 波长 k = 2*pi/lamda; % 波数 d = 200; % 传播距离 N = 128; % 采样数 x = linspace(-1,1,N); % 衍射屏和观察屏 slit = zeros(1,N); % 狭缝 slit(abs(x)<=0.1) = 1; % 宽度为0.2mm的狭缝 coe = exp(1i*k/2/d*x.^2); % 菲涅尔积分项 Efresnel = fftshift(fft(slit.*coe))*(x(2)-x(1)); % 菲涅尔衍射的傅里叶变换 Ifresnel = abs(Efresnel).^2; plot(x,Ifresnel); % 画图 grid on |
» 猜你喜欢
论文终于录用啦!满足毕业条件了
已经有13人回复
2025年遐想
已经有5人回复
投稿Elsevier的杂志(返修),总是在选择OA和subscription界面被踢皮球
已经有8人回复
求个博导看看
已经有18人回复
» 本主题相关价值贴推荐,对您同样有帮助:
新手请教MATLAB函数做图问题,非常感谢
已经有3人回复
请教 matlab关于优化设置及应用到 isqnonlin的一些难点。
已经有4人回复
matlab模拟菲涅尔直边衍射
已经有9人回复
matlab在概率统计中的计算
已经有76人回复
请教Matlab图形保存问题
已经有5人回复
请教一个如何调整matlab 画图颜色的问题
已经有5人回复
Matlab中RBF建模,仿真是遇到的问题
已经有6人回复
请教matlab求解问题
已经有3人回复
请教Matlab高手
已经有5人回复
如何用matlab进行快速傅里叶变换?(请教)
已经有5人回复
【求助】判断菲涅尔区及夫琅和费衍射区的距离,菲涅尔数
已经有5人回复
【求助】问一个关于matlab中legend的问题
已经有11人回复
【求助】请教如何用matlab画出矢量图?
已经有3人回复
ygjianqiang
铜虫 (初入文坛)
- 应助: 8 (幼儿园)
- 金币: 374.4
- 散金: 751
- 红花: 3
- 帖子: 35
- 在线: 78.5小时
- 虫号: 1151557
- 注册: 2010-11-20
- 专业: 光学
【答案】应助回帖
★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
夕阳西下: 金币+10, 奖励 2012-06-07 21:39:52
感谢参与,应助指数 +1
夕阳西下: 金币+10, 奖励 2012-06-07 21:39:52
|
请问你采用的是菲涅尔衍射的哪个公式?卷积法吗? 没太理解你的意思,如果是想采用卷积法做菲涅尔衍射的话,贴个程序供你参考吧: clc clear all close all r=512,c=r; a=zeros(r,c); a(257-1:257+1,257-128:257+127)=1;%调入图像 figure,imshow(a,[]) lamda=6328*10^(-10);k=2*pi/lamda; L0=5*10^(-3);%给出衍射面的尺寸,单位:米 x0=linspace(-L0/2,L0/2,c); y0=linspace(-L0/2,L0/2,r); [x0,y0]=meshgrid(x0,y0); z=0.1;%屏到衍射面的距离,单位:米 F0=exp(j*k*z)/(j*lamda*z); F1=exp(j*k/2/z.*(x0.^2+y0.^2)); fa=fft2(a); fF1=fft2(F1); Fuf=fa.*fF1; %在观察屏上的光场分布 U=F0.*fftshift(ifft2(Fuf)); I=U.*conj(U); %在观察屏上的光强分布 figure,imshow(I,[0,max(max(I))]); |
2楼2012-05-30 10:18:02
3楼2012-06-08 22:43:03







回复此楼