24小时热门版块排行榜    

查看: 3180  |  回复: 15

你倒是跑啊

金虫 (初入文坛)

[求助] matlab程序实现菲涅尔衍射(用fft实现) 哪里不对 已有2人参与

%光束经菲涅尔衍射后的光强分布
clear,clc;

%初始光场
c=linspace(-0.1,0.1,64);
r=linspace(-0.1,0.1,64);
[x,y]=meshgrid(c,r);
[thero,rho]=cart2pol(x,y);
l=3;w0=0.03;
lambda=1.55e-6;k=2*pi/lambda;
u=(sqrt(2)*rho/w0).^l.*exp(-rho.^2/w0^2).*exp(1i*l*thero)*sqrt(2/factorial(l)/pi);         %光场表达式
h=abs(u);
intensity=h.^2;
%显示光强
figure;
surf(x,y,intensity);


%菲涅尔衍射(角谱衍射理论)
z1=10;      % 衍射距离
M=64;N=64;
n=0.2;      %宽度
dx=(M-1)/n;dy=(N-1)/n;              %频率间隔                                    
fx=[-31:1:32]'*ones(1,M)*dx/63;        %频率坐标                              
fy=ones(N,1)*[-31:1:32]*dy/63;
trans=exp(1i*k*z1*(ones(M,N)-lambda^2*fx.^2-lambda^2*fy.^2).^0.5);    %传递函数


uu=fftshift(fft2(fftshift(u)));   
U=uu.*trans;
UU=fftshift(ifft2(fftshift(U)));

h=abs(UU);
intensity=h.^2;
%显示光强
figure;
surf(x,y,intensity);


做出来的两张图没有变化。   是频率间隔和频率坐标取得不对吗?如果是,怎么改?
求大神帮忙!谢谢!
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

你倒是跑啊

金虫 (初入文坛)

不要沉,求助攻!!!!谢谢啊
2楼2016-06-20 09:19:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hcquan

金虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
你倒是跑啊: 金币+15, ★★★很有帮助, 谢谢! 2016-06-21 17:26:40

你把距离设得太小了,z1=10,你这里的单位是um,把它设大点,程序没问题。
3楼2016-06-20 11:25:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Berylcczhang

铜虫 (小有名气)

4楼2016-06-21 16:54:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

你倒是跑啊

金虫 (初入文坛)

引用回帖:
4楼: Originally posted by Berylcczhang at 2016-06-21 16:54:49
是傅立叶变换么?

是的
5楼2016-06-21 17:25:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
6楼2017-08-17 17:37:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
7楼2017-08-17 23:11:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
8楼2017-08-18 14:04:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
9楼2017-08-18 22:43:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
10楼2017-08-20 13:32:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 你倒是跑啊 的主题更新
信息提示
请填处理意见