怎么用matlab赋值圆孔,求一个用MATLAB做圆孔或圆屏衍射的实验,要求程序正确,能出图像,非常感谢...

满意答案

02ae427d08e371d7e90d5b995e828d6d.png

usrdu

2013.11.22

02ae427d08e371d7e90d5b995e828d6d.png

采纳率:50%    等级:13

已帮助:9126人

%%傅里叶变换法

clear all

z1=20;

r=4;

N=512;

d=180;

lambda=0.0039;

k=2*pi/lambda;

f1=16*pi/lambda;

R=z1+f1^2/z1;

k0=-N/2:N/2-1;

a=sqrt(lambda*d/N);

[x0,y0]=meshgrid(k0*a);

w=4*sqrt(1+(z1/f1)^2);

Ein=100/w*exp(-(x0.^2+y0.^2)/w^2).*exp(-i*(k*(z1+(x0.^2+y0.^2)/2/R)-atan(z1/f1)));

for m=1:N %%%%%%%%%%%%%%%%%%%圆孔

for n=1:N

if (x0(m,n)^2+y0(m,n)^2>(r)^2)

Ein(m,n) = 0;

end

end

end

E=fft2(Ein.*exp(i*k/2/d*(x0.^2+y0.^2))); %%%%傅里叶变换

Eout=fftshift(abs(E));

x=x0;

y=y0;

U=exp(i*k*d)/i/lambda/d.*exp(i*k/2/d*(x.^2+y.^2)).*Eout;

I=U.*conj(U);

figure,mesh(x,y,I)

figure,plot(x,I)

00分享举报

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值