matlab 利用快速傅里叶变换计算谐振腔的模式
%%利用二维快速傅里叶变换方法计算谐振腔中的模式
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=FFT(u0);
U1=U0.*H;
u1=ifft(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;
本人是matlab初学者,请各位大神帮忙指点一二!
谢谢了 返回小木虫查看更多
今日热帖
汗,你想问什么 ?
这个结果不对啊,不知道是哪里出了问题
我能知道 是什么么
就是冒号和)组成的
报错说没有FFT这个函数,改成fft可以运行。不知道结果是你预期的不。不会贴图。
%%利用二维快速傅里叶变换方法计算谐振腔中的模式
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;
这是修改后的,结果还是有点问题,
正确的结果应该是基模高斯光束的光斑分布