[未答复] 分步傅里叶算法仿真光束传输求助

[复制链接]
nantong 发表于 2022-7-6 16:44:54
小弟想用分步傅里叶算法模拟仿真高斯光束在空气中传输,最终实现下面的效果,请大兄弟们指点一下
分步傅里叶.png

1 条回复


nantong 发表于 2022-7-6 16:47:02
尝试了一下 没有得到想要的效果
clear;
distance=5;
N=500;%input('Number of samples(enter from 100 to 500)=');%N:抽样数
L=10*10^-3;
Ld=0.6328;%input('请输入波长 [毫米]=');
Ld=Ld*10^-6;        
ko=(2*pi)/Ld;
wo=1;%input('请输入束腰 [毫米]=');
wo=wo*10^-3;
z_ray=(ko*wo^2)/2*10^3;
z_ray=z_ray*10^-3;
% z=4;%input('请输入传输距离z[米]=');
dx=L/N;
step_num=50;
deltaz=distance/step_num;
% k=1;
% Uz=[];


for n=1:N+1
    for m=1:N+1
           %Space axis
            x(m)=(m-1)*dx-L/2;
            y(n)=(n-1)*dx-L/2;
            %空域中的高斯光束
                Gau(n,m)=exp(-(x(m)^2+y(n)^2)/(wo^2));%Frequency axis
                Kx(m)=(2*pi*(m-1))/(N*dx)-((2*pi*(N))/(N*dx))/2;
                Ky(n)=(2*pi*(n-1))/(N*dx)-((2*pi*(N))/(N*dx))/2;
            %自由空间传输函数     
    end
end
%频域中的高斯光束
% FGau=fft2(Gau);
% FGau=fftshift(FGau);
%频域中传输的高斯光束
% x=x*10^3;
% y=y*10^3;
% K=(Kx)^2+(Ky)^2;
dispersion=exp(1i/(2*ko)*((Kx(m)^2+Ky(n)^2))*deltaz);
% hhz=1i*deltaz;
temp=Gau;
nn=0;
for n=1:step_num
  f_temp=ifft(temp).*dispersion;
  Gau=fft(f_temp);
%   temp=Gau.*exp((abs(Gau).^2)*hhz);
  temp=Gau;
%   x=x*10^3;
%   y=y*10^3;
  imagesc(x,y,abs(temp))
%   Z(nn,=abs(temp).^2;
Z(n, = temp(250,;
  nn=nn+1;
end
z=0:1:50;
figure
% imagesc(x,z,(abs(Z)).^2)
mesh(abs(Z).^2)
% view(2)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表