基于 Matlab 仿真基模高斯光束在自由空间的传播轨迹。
时间: 2023-10-13 16:04:12 浏览: 306
贝塞尔高斯光束自由传输matlab仿真,高斯光束的matlab仿真程序,matlab
5星 · 资源好评率100%
基模高斯光束的数学表达式为:
$E(x,y,z) = \frac{E_0 w_0}{w(z)}exp[-\frac{(x^2+y^2)}{w^2(z)}]exp[-i(kz-\frac{k(x^2+y^2)}{2R(z)}+\phi(z))]$
其中,$E_0$为振幅,$w_0$为光束在束腰处的半径,$w(z)$为光束在任意位置$z$处的半径,$k$为波数,$R(z)$为光束曲率半径,$\phi(z)$为相位。
在自由空间中,光束的传播轨迹可以用传输函数来表示:
$U(x,y,z) = \frac{1}{i\lambda z}exp[\frac{ik(x^2+y^2)}{2z}]U(x,y,0)$
其中,$U(x,y,0)$为光束在起始位置的复振幅分布,$\lambda$为光波长。
以下是基于 Matlab 的仿真代码:
```matlab
% 定义参数
w0 = 1e-3; % 束腰半径
lambda = 632.8e-9; % 光波长
k = 2*pi/lambda; % 波数
z = 0:0.01:10; % 传播距离
dz = z(2) - z(1); % 步长
L = length(z); % 步数
x = linspace(-10*w0, 10*w0, 512); % 横向坐标
y = x; % 纵向坐标
[X,Y] = meshgrid(x,y);
% 初始振幅分布
U0 = exp(-(X.^2+Y.^2)/w0^2);
% 计算传输函数
H = exp(1i*k*(X.^2+Y.^2)/(2*z(end)))/(1i*lambda*z(end));
% 传输过程
U = zeros(size(U0,1),size(U0,2),L);
U(:,:,1) = U0;
for i = 2:L
U(:,:,i) = ifft2(fft2(U(:,:,i-1)).*fft2(H)*dz);
end
% 绘制传播过程
figure;
for i = 1:10:L
surf(x,y,abs(U(:,:,i)).^2);
axis([-10*w0 10*w0 -10*w0 10*w0 0 max(abs(U0(:)).^2)]);
title(sprintf('Propagation Distance: %.2f cm', z(i)*100));
xlabel('x (m)');
ylabel('y (m)');
zlabel('Power Density (W/m^2)');
view(45,30);
drawnow;
end
```
该代码会生成一个三维图像,展示基模高斯光束在自由空间中的传播轨迹。可以通过修改参数来探索不同条件下的光束传输情况。
阅读全文