24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1539  |  回复: 7
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

wupeng2320

金虫 (小有名气)

[求助] 菲涅尔衍射数值模拟已有2人参与

最近在做菲涅尔衍射数值模拟,但在模拟上遇到了问题,希望光学加matlab的大神能不啬赐教!
    模拟中,物体是圆孔,然后菲涅尔衍射公式采用的是卷积形式:u(x,y)=exp(jkz)/(j*lamda*z)*【u0(x,y)和exp(jk/(2z)*(x^2+y^2)】。u0(x,y)是物函数,模拟中用上述圆孔做物。二维离散卷积的实现过程是通过conv2进行。但是结果出现之后不是菲涅尔,所以猜想是菲涅尔公式的实现出现了问题,还是说取样的问题?期待各位给解答下,万分感谢。
    程序如下(附件是.m文件):
    clear all;
%做小孔。R=50,圆心(128,128)
for x=1:256
    for y=1:256
    if ((x-128).^2+(y-128).^2<=2500)
       t(x,y)=1;
    else
        t(x,y)=0;
    end
    end
end
%显示圆孔图像
subplot(121)
imshow(t,[])
%菲涅尔公式参量设置
z=200;
lamda=500*10^(-3);
k=2*pi/lamda;
%采用的菲涅尔公式形式是:u(x,y)=exp(jkz)/(j*lamda*z)*【u0(x,y)和exp(jk/(2z)*(x^2+y^2)】的卷积
%u0(x,y)是物函数,本程序利用上述圆孔做物函数。
for x=1:256
    for y=1:256
    f(x,y)=exp(i*k*(x.^2+y.^2)/2/z);
    end
end
m=conv2(t,f)
u=exp(i*k*z)/(i*lamda*z).*m
%展示衍射图
subplot(122)
imshow(u.*conj(u),[])
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

michaeldel

至尊木虫 (正式写手)

火星领导

【答案】应助回帖

你这里的问题是不是出在这一句


  f(x,y)=exp(i*k*(x.^2+y.^2)/2/z);

x,y的尺寸是256 微米吗?
在利思害,在害思利
3楼2015-04-24 17:49:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 8 个回答

michaeldel

至尊木虫 (正式写手)

火星领导

【答案】应助回帖

感谢参与,应助指数 +1
为何不用标准传递函数法

先傅里叶变换变成频域,乘以标准传递函数,然后在傅里叶逆变换

如此,很简洁
在利思害,在害思利
2楼2015-04-24 17:25:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wupeng2320

金虫 (小有名气)

引用回帖:
2楼: Originally posted by michaeldel at 2015-04-24 17:25:04
为何不用标准传递函数法

先傅里叶变换变成频域,乘以标准传递函数,然后在傅里叶逆变换

如此,很简洁

你说的这个方法已经写出了,现在想换种处理方式来验证下。
4楼2015-04-24 20:31:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wupeng2320

金虫 (小有名气)

引用回帖:
3楼: Originally posted by michaeldel at 2015-04-24 17:49:36
你这里的问题是不是出在这一句


  f(x,y)=exp(i*k*(x.^2+y.^2)/2/z);

x,y的尺寸是256 微米吗?

你能说下这个可能的错误吗?我设定的物是256*256上中心的一个圆孔。你是说这个指数函数的取值有问题?
5楼2015-04-24 20:36:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见