MATLAB仿真:经过大气湍流的涡旋光束的光斑漂移
涡旋光束在经过大气湍流时,大气折射率的随机变化导致在与传输方向垂直的平面内光斑质心偏离中心传输轴,这种现象叫做光斑漂移,由参数rc21/2 表征,该参数称为光束质心的均方根(RMS),其中光斑质心rc可表示为:
通过模拟或者实验采集N张湍流下的光强图,利用程序计算每张光强图的质心(xn,yn),以及所有光强图的平均质心(x,y),则光束质心的均方根可以表示为:
我们利用程序模拟了在不同大气结构常数下的拉盖尔高斯涡旋光束并保存在对应文件夹中,再利用光束漂移计算程序计算出各自的RMS值,和对应每张光强的质心位置散点图,由图中可以看出湍流越强,光斑漂移越严重。
部分matlab仿真代码如下(仿真参数展示,可自行修改):
%% 光斑漂移光强图仿真
clc;clear;close;
% 坐标
L=0.5;%单位m
NN =512;
dxy =L/NN;
[x,y] =meshgrid((-NN/2:NN/2-1)*dxy);
r1 = sqrt(x.^2+y.^2);
phi= angle(x+1i*y);%% 光束参数
lambda=1550e-9;%m
w0=0.01;
k=2*pi/lambda;
p=0;
l=3;Cn2=1.0e-14;
L0=20;
l0=5.0e-3;
zt=1000;
nz=20;
dz=zt/nz;
r0=(0.423 * k^2 * Cn2 *dz) .^(-3/5);
%% 光束漂移均方根计算
clear ; close ; clc
L=0.5;%单位m
NN =512;
dxy =L/NN;
y=linspace(-(NN/2),(NN/2)-1,NN);
x=linspace(-(NN/2),(NN/2)-1,NN);
x=x*dxy;
y=y*dxy;
[X,Y] =meshgrid(x,y);num=100;
for ii=1:num
filename = fullfile(pwd, 'Generated_Intensity_Images_Cn2=1.0e-16;', ['image_' num2str(ii) '.png']);
I = imread(filename);I=double(I);Itur=I./max(I(:));
total_Itur=sum(Itur(:));%总光强figure(1)
imagesc(x,y,Itur);colormap jet;axis on;axis square
hold on
plot(xp,yp,'r.','LineWidth',1.2)figure(2);
plot(xp, yp, 'r.', 'MarkerSize', 5);
xlabel('X 轴 (mm)');
ylabel('Y 轴 (mm)');
title('每张光强的质心位置');
grid off;
axis equal;
% 设置坐标轴范围(可自行修改)
xlim([-0.02 0.02]); % X轴范围(单位 mm)
ylim([-0.02 0.02]); % Y轴范围(单位 mm)disp(['✅ 光斑漂移量:' num2str(cp),'mm']);
更多完整代码及讲解进t店博士生牛马赚点小钱