当前位置: 首页 > 计算模拟 >matlab 利用快速傅里叶变换计算谐振腔的模式

matlab 利用快速傅里叶变换计算谐振腔的模式

作者 oewindbell
来源: 小木虫 350 7 举报帖子
+关注

%%利用二维快速傅里叶变换方法计算谐振腔中的模式
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初学者,请各位大神帮忙指点一二!
谢谢了 返回小木虫查看更多

今日热帖
  • 精华评论
  • alorsmail

    汗,你想问什么 ?

  • oewindbell

    这个结果不对啊,不知道是哪里出了问题

  • lty0709

    我能知道    是什么么

  • oewindbell

    就是冒号和)组成的

  • 十年一梦

    报错说没有FFT这个函数,改成fft可以运行。不知道结果是你预期的不。不会贴图。

  • oewindbell

    %%利用二维快速傅里叶变换方法计算谐振腔中的模式
    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;
    这是修改后的,结果还是有点问题,

  • oewindbell

    正确的结果应该是基模高斯光束的光斑分布

猜你喜欢
下载小木虫APP
与700万科研达人随时交流
  • 二维码
  • IOS
  • 安卓