%%利用二维快速傅里叶变换方法计算谐振腔中的模式
clear;
clc;
lambda=1.064*10^-6; %波长
k=2*pi/lambda; %波数
a=0.5*10^-3; %镜子的半径
fnum=5; %菲涅尔数
z=a^2/fnum/lambda; %腔长
repet=100; %迭代次数
M=129;N=129;
x=linspace(-a,a,M);
y=linspace(-a,a,N);
[X,Y]=meshgrid(x,y);
u0=ones(M,N);
u1=zeros(M,N);
H=exp(1j*k*z).*exp(-1j*pi*lambda*z.*(X.^2+Y.^2));
for inter=1:repet
U0=fft2(u0);
U1=U0.*H;
u1=ifft2(U1);
u1=u1./max(abs(u1(:));
u0=u1;
end
Ie=u1.*conj(u1);
Ie=Ie./max(Ie(:);
surf(X,Y,Ie);
shading interp;
axis([-a,a,-a,a,0,1]);
box on; grid off;
这是修改后的,结果还是有点问题,