贝塞尔-高斯光束是一种特殊类型的光束,在自由空间传播时其横截面的强度分布保持不变。在 MATLAB 中模拟贝塞尔-高斯光束的自由传播可以通过以下步骤完成:
1. 确定仿真参数
- 波长(例如,632.8 nm)
- 初始光束参数(例如,光束的 waist 或初始尺寸)
- 仿真区域的尺寸和分辨率
- 传播距离
2. 计算初始光场分布
贝塞尔-高斯光束在初始平面(通常是 z = 0 处)的光场分布可以通过结合高斯光束和贝塞尔函数来计算。
3. 光场传播
使用合适的传播模型(例如,基于傅里叶变换的角谱法)来计算光束在不同距离处的光场分布。
4. 结果可视化
展示光束在不同传播距离处的强度分布(一般是光强的平方)。
matlab代码:
% 贝塞尔高斯光束自由传输仿真
% 设置仿真参数
lambda = 0.6328e-6; % 波长(米)
wavelength = lambda; % 波长用于 paraxial 近似
k = 2 * pi / lambda; % 波数
% 初始贝塞尔高斯光束参数
w0 = 0.1e-3; % 初始束腰半径(米)
zR = pi * w0^2 / lambda; % 瑞利范围
z = 0; % 初始传输距离
% 空间坐标设置
x = linspace(-2*w0, 2*w0, 400);
y = x;
[X, Y] = meshgrid(x, y);
% 计算初始光束复振幅分布
wz = w0 * sqrt(1 + (z/zR)^2);
Rz = z * (1 + (zR/z)^2);
psi = atan(z/zR);
w = w0 * sqrt(1 + ((lambda*z)/(pi*w0^2))^2);
GaussianBeam = exp(-(X.^2 + Y.^2) / w^2) * exp(-1i * k * z - 1i * k * (X.^2 + Y.^2) / (2 * Rz) + 1i * psi);
% 显示初始光束
figure;
subplot(1, 2, 1);
imagesc(x, y, abs(GaussianBeam).^2);
title('Initial Beam Profile');
xlabel('X (m)');
ylabel('Y (m)');
axis square;
colormap('hot');
colorbar;
% 自由传输仿真
z_final = 2; % 最终传输距离
dz = z_final / 100; % 传输步长
for z = 0:dz:z_final
wz = w0 * sqrt(1 + (z/zR)^2);
Rz = z * (1 + (zR/z)^2);
psi = atan(z/zR);
w = w0 * sqrt(1 + ((lambda*z)/(pi*w0^2))^2);
% 计算传输后的光束复振幅分布
GaussianBeam = exp(-(X.^2 + Y.^2) / w^2) * exp(-1i * k * z - 1i * k * (X.^2 + Y.^2) / (2 * Rz) + 1i * psi);
% 显示传输后的光束
subplot(1, 2, 2);
imagesc(x, y, abs(GaussianBeam).^2);
title(['Beam Profile at z = ' num2str(z_final) ' m']);
xlabel('X (m)');
ylabel('Y (m)');
axis square;
colormap('hot');
colorbar;
drawnow;
end
仿真结果: