| 查看: 3965 | 回复: 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 |
» 猜你喜欢
2019年青年基金涵评意见,大家看看几个A,几个B?
已经有8人回复
不应该看fileCode
已经有6人回复
好奇怪的filecode
已经有6人回复
FileCode能看出啥?
已经有21人回复
长年满屏的广告,版主太不责任了。基金也等的急
已经有4人回复
filecode
已经有15人回复
关于Filecode分析方法
已经有4人回复
应该是93bebmhtak前后十一个字符比较关键
已经有35人回复
职称评审,求友友推荐见刊最快的期刊
已经有4人回复
奇怪,两个人的filecode固定段从头到尾一模一样
已经有10人回复
» 本主题相关价值贴推荐,对您同样有帮助:
新手请教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










回复此楼