| 查看: 3722 | 回复: 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人回复
AI 太可怕了,写基金时,提出想法,直接生成的文字比自己想得深远,还有科学性
已经有11人回复
表哥与省会女结婚,父母去帮带孩子被省会女气回家生重病了
已经有9人回复
同年申请2项不同项目,第1个项目里不写第2个项目的信息,可以吗
已经有10人回复
依托企业入选了国家启明计划青年人才。有无高校可以引进的。
已经有11人回复
» 本主题相关价值贴推荐,对您同样有帮助:
新手请教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人回复
3楼2012-06-08 22:43:03
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













回复此楼