分步傅立叶传播 - 波束传播法
Split step Fourier propagation - Beam propagation method
您好,我在使用分步傅立叶方法时遇到了困难。假设我想免费传播高斯 space,我应该使用:
A(x,z) = F^-1 [exp((i*k^2*z)/(2*k_0))* F[A(x,0)]]
其中 F 是傅立叶,F^-1 是逆傅立叶。
我想要做的是绘制 I(x,z=0)、I(x,z=3) 和 x-z 平面中的强度分布。
我尝试使用以下代码以数字方式进行(绘制 I(x,z=0), I(x,z=3)):
lambda = 0.5*10^-6;
k0 = 2*pi/lambda;
w = 10*10^-6;
N=500;
a=0.4*10^-4;
dx=a/N;
x = -a/2:dx:a/2-dx;
Dk_x = 2*pi*N/a;
dk_x=2*pi/a;
k_x=-Dk_x/2:dk_x:Dk_x/2-dk_x;
N = (k_x.^2)/(2*k0);
z = 0:(5*10^-3)/length(N):5*10^-3;
z(end) = [];
% A0 = A(x,z=0)
A0 = exp(-x.^2/w^2);
I_0 = A0.*conj(A0);
% F_A0 is the fourier of A0
F_A0 = fft(A0);
% A3 = A(x,z=3)
A3 = ifft(exp(1i*N*3).*F_A0);
I_3 = A3.*conj(A3);
figure
plot(x,I_3,x,I_0)
然而,I_3 不是我期望的,这是另一个强度较小的高斯分布。
此外,我不确定如何绘制 x-z 平面中的强度分布。他们建议使用 imagesc 函数,我想我会像这样使用它:
imagesc(x,z, abs(ifft(exp(1i*N.*z).*F_A0).^2)
但是第三个参数,应该是一个矩阵,在我写的是一个向量..
谁能帮我解决这个问题?
提前致谢。
这里有一个分步自由高斯传播的例子:
N=2^9; % x grid points
L=100; % box length
dx=L/N; %position grid interval
x=(-L/2+1/N):dx:L/2; %define position grid (centered around origin)
dk=2*pi/L; %momentum grid interval
k=(-N/2+1:1:N/2).*dk; %define momentum grid
A_z=exp(-x.^2); % initial gaussian
dz=0.01; % propagation step
z=0:dz:3; % propagation vector
% do the propagation using split step
for n=1:numel(z)
A_z=ifft(fftshift( exp(1i*k.^2*dz).*fftshift(fft(A_z)) ));
I_z(n,:)=abs(A_z).^2;
end
imagesc(x,z,I_z)
xlim([-20 20]);
xlabel('x'); ylabel('z')
您好,我在使用分步傅立叶方法时遇到了困难。假设我想免费传播高斯 space,我应该使用:
A(x,z) = F^-1 [exp((i*k^2*z)/(2*k_0))* F[A(x,0)]]
其中 F 是傅立叶,F^-1 是逆傅立叶。
我想要做的是绘制 I(x,z=0)、I(x,z=3) 和 x-z 平面中的强度分布。
我尝试使用以下代码以数字方式进行(绘制 I(x,z=0), I(x,z=3)):
lambda = 0.5*10^-6;
k0 = 2*pi/lambda;
w = 10*10^-6;
N=500;
a=0.4*10^-4;
dx=a/N;
x = -a/2:dx:a/2-dx;
Dk_x = 2*pi*N/a;
dk_x=2*pi/a;
k_x=-Dk_x/2:dk_x:Dk_x/2-dk_x;
N = (k_x.^2)/(2*k0);
z = 0:(5*10^-3)/length(N):5*10^-3;
z(end) = [];
% A0 = A(x,z=0)
A0 = exp(-x.^2/w^2);
I_0 = A0.*conj(A0);
% F_A0 is the fourier of A0
F_A0 = fft(A0);
% A3 = A(x,z=3)
A3 = ifft(exp(1i*N*3).*F_A0);
I_3 = A3.*conj(A3);
figure
plot(x,I_3,x,I_0)
然而,I_3 不是我期望的,这是另一个强度较小的高斯分布。
此外,我不确定如何绘制 x-z 平面中的强度分布。他们建议使用 imagesc 函数,我想我会像这样使用它:
imagesc(x,z, abs(ifft(exp(1i*N.*z).*F_A0).^2)
但是第三个参数,应该是一个矩阵,在我写的是一个向量..
谁能帮我解决这个问题?
提前致谢。
这里有一个分步自由高斯传播的例子:
N=2^9; % x grid points
L=100; % box length
dx=L/N; %position grid interval
x=(-L/2+1/N):dx:L/2; %define position grid (centered around origin)
dk=2*pi/L; %momentum grid interval
k=(-N/2+1:1:N/2).*dk; %define momentum grid
A_z=exp(-x.^2); % initial gaussian
dz=0.01; % propagation step
z=0:dz:3; % propagation vector
% do the propagation using split step
for n=1:numel(z)
A_z=ifft(fftshift( exp(1i*k.^2*dz).*fftshift(fft(A_z)) ));
I_z(n,:)=abs(A_z).^2;
end
imagesc(x,z,I_z)
xlim([-20 20]);
xlabel('x'); ylabel('z')