大气湍流自适应光学校正算法matlab仿真,包括涡旋光束,大气湍流影响,不同轨道角动量OAM态之间的串扰,校正等

news2024/11/20 6:26:36

目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

       涡旋光束是一种具有螺旋波前的光束,在涡旋光束中,决定涡旋光束特性的角量子数可以是任意一个自然数,其不同设置所产生的涡旋光束之间存在正交关系。目前,产生涡旋光束的方式很多种,总的来讲,包括腔外光束产生方式和腔内光束产生方式两种类型。第一种产生方式,其主要通过谐振器件来得到髙斯光束,然后将高斯光束通过特殊的相位元件来达到空间整形的目的,继而产生相应的涡旋光束。第二种产生方式,其直接进行空间相位整形,并在谐振腔内得到相应的涡旋光束。第二种产生方式也就是常见的涡旋激光器。目前为止,涡旋光束有着极其广泛的应用前景,包括生物医学领域,原子物理学领域,材料科技以及激光等多个领域。

    但是涡旋光束在大气中传输的时候,由于受到各种大气因素的干扰,如光线干扰,天气影响,气温压强变化,从而导致大气折射率的改变。此时,涡旋光束在传输过程中会受到大气折射率的影响,从而导致涡旋光束在大气传播时,出现诸如光束扩展、光束抖动、涡旋光束的OAM谱弥散,串扰等问题,即大气湍流效应[02,03] 。

    因此,对受到大气湍流影响的涡旋光束进行校正就显得格外重要,传统的光学校正,其工作流程主要分为五个步骤。

    第一、涡旋光束受到大气湍流的影响而导致了相位的畸变、串扰等问题。

    第二、相位畸变和串扰等影响了通信质量;

    第三、加入自适应光学校正模块,得到预校正的涡旋光束,控制相位和光强分布;

    第四、自适应光学校正模块减少了涡旋光束的相位的畸变、串扰等问题。

    第五、改善通信指标,提升了通信性能。

    但由于涡旋光束有其特殊的相位特性和光强度分布特性,使得传统的光学校正方法无法达到校正效果,因此研究一种适用于受到大气湍流影响的涡旋光束的自适应校正技术具有十分重要的意义。

      涡旋光束是一种具有OMA轨道角动量的激光光束,其相位呈现为螺旋分布状态,但光束中心处的相位是未知的。Allen等人提出了涡旋光束的相位可以通过如下公式表示:

      涡旋光束有多种表现形式,如贝塞尔光束,拉盖尔-高斯光束以及环形涡旋光束等。其中环形涡旋光束是以高斯光束为基础实现的,其计算表达式为: 

      贝塞尔光束中包含贝塞尔函数,他是一种空心光束,贝塞尔光束属于一种经典的涡旋光束。其表达式为:

   大气湍流的基本原理最早是由Kolmogorov在二十世纪四十年代提出的,在其原理中提供通过大雷诺兹数来表示湍流的内部结构,从而推进了湍流理论的发展,因此基于大雷诺兹数的湍流理论奠定了现代湍流理论的基础[13]。

       在Kolmogorov的湍流理论中的相关定义可知,流体具有层流和湍流两种不同的状态。其中,当流体运行速度较低的时候,流体的流线比较平滑,因此流体处于层流状态。而当流体运行速度较大的时候,流体的流线将变得随机不规则,那么这种状态就是流体的湍流。层流和湍流的示意图如下图所示:

        由Kolmogorov的湍流理论可知,大气湍流情况和流体湍流类似,两者不同之处在于其物理性质不同,由于受到光线干扰,天气影响,气温压强变化等因素的影响,大气一直处于流动状态,从而产生不同压强、流速、气压的旋涡,如图2.4所示。然后多个旋涡相互影响,相互关联和重叠,共同作用下产生了大气湍流现象。大气湍流会导致折射率的改变。因此,涡旋光束在大气中传输会受到大气折射率的影响,从而导致涡旋光束的光束扩展、光束抖动、OAM谱弥散,串扰等问题。

    涡旋光束在大气湍流中传输时,光束将发生波前畸变,随后涡旋光束的光强度将呈现非均匀分布,明暗度不一,光斑的外形将发生严重扭曲并且目标的OAM能量占比将明显下降。因此需要对畸变的光束进行校正,使得光强分布变得均匀,光斑的外形将得到进一步规整,并且目标的OAM能量占比将得以提高。

2.仿真效果预览

matlab2022a仿真结果如下:

 

 

 

      从图仿真结果可知,随着传输距离的不断增加,涡旋光束通过有湍流传输之后,其光强度分布随着传输距离的增加而不断分散,相位相位的“每一扇叶片”的分界处随着传输距离的变得更加模糊。而通过自适应校正之后,涡旋光束的强度和相位均得到了有效的校正。其光强度分布更叫均匀,但是在相位跳变区域,随着距离的增加,通过自适应校正后仍存在一定的影响。

3.MATLAB核心程序

 
 
%%
%大气湍流的物理特性分析
Dist = [0:2000:20000];
 
figure;
indx = 0;
rad1 = [];
for L=Dist
    indx      = indx + 1;
    Cn        = 8*10^(-9); 
    th        = 4.03*Cn.^(6/5)*0.6328.^(-1/5)*L.^(3/5); 
    rad1(indx)= th*L; 
end 
plot(Dist,rad1,'b-o')  
% title('涡旋光束光斑尺度和传输距离的关系') 
xlabel('传输距离') 
ylabel('涡旋光束光斑尺度') 
 
figure;
indx = 0;
rad2 = [];
Cset = [0:20*10^(-9):500*10^(-9)];
for Cn = Cset
    indx       = indx + 1;
    L          = 100; 
    th         = 4.03*Cn.^(6/5)*0.6328.^(-1/5)*L.^(3/5); 
    rad2(indx) = th*L; 
end 
plot(Cset,rad2,'b-o') 
% title('涡旋光束光斑尺度和湍流强度的关系') 
xlabel('湍流强度') 
ylabel('涡旋光束光斑尺度') 
 
 
figure;
indx = 0;
alf  = [];
Dist = [0:2000:20000];
for L= Dist 
    indx      = indx + 1;
    Cn        = 8*10^(-9); 
    alf(indx) = sqrt(1.75*Cn*Cn*L*3.2^(-1/3)*10^(-18)); 
end 
plot(Dist,alf,'b-o') 
% title('涡旋光束光斑偏移角度和传输距离的关系') 
xlabel('传输距离') 
ylabel('涡旋光束光斑偏移角度') 
 
figure;
indx = 0;
Cset = [0:20*10^(-9):500*10^(-9)];
alf  = [];
for Cn=Cset 
    indx      = indx + 1;
    L         = 1000; 
    alf(indx) = sqrt(1.75*Cn*Cn*L*3.2^(-1/3)*10^(-18)); 
end 
plot(Cset,alf,'b-o') 
xlabel('湍流强度') 
ylabel('涡旋光束光斑偏移角度') 
 
figure;
indx = 0;
B    = 0.49;
Dist = [0:500:20000];
I    = [];
for  L=Dist 
     indx   = indx + 1;
     Cn     = 8*10^(-9); 
     I(indx)= B*(2*pi/0.6328).^(7/6)*L.^(11)*Cn.^2*10^(-18); 
end 
plot(Dist,I,'b-o') 
xlabel('传输距离') 
ylabel('涡旋光束光强起伏')
 
figure;
indx = 0;
B    = 0.49; 
Cset = [0:20*10^(-9):500*10^(-9)];
I    = [];
for Cn=Cset
    indx   = indx + 1;
    L      = 1000; 
    I(indx)= B*(2*pi/0.6328).^(7/6)*L.^(11)*Cn.^2*10^(-18); 
end 
plot(Cset,I,'b-o') 
xlabel('湍流强度') 
ylabel('涡旋光束光强起伏') 
 
%%
%光线通过大气湍流的变换仿真分析
N         = 300;
w0        = 0.03;
s         = 5;
z         = 1000;
lamda     = 1.550e-6;
k         = 2*pi/lamda;
z0        = k*w0^2/2;
%图像坐标范围
b         = 0.2;
dx        = b/N;
Cn2       = 1e-15;
%传输距离
Numz      = 20;%把传播距离分成Numz段
dz        = z/Numz;%每段的距离
m2        = [-N/2:N/2-1];
[r,theta] = meshgrid(linspace(0,b,N),linspace(0,2*pi,N));
[x,y]     = pol2cart(theta,r);
%窗口宽度
L         = 0.7;
df        = 1/L;
%空间频率
[fx,fy]   = meshgrid(m2*df);
fr        = sqrt(fx.^2+fy.^2);
kx        = 2*pi*fx;
ky        = 2*pi*fy;
kr        = 2*pi*fr;
A         = sqrt(2/(pi*gamma(abs(s)+1)));
%发射光束的表达式
u0        = A*exp(-r.^2/w0^2).*(sqrt(2)*r/w0).^s.*exp(1i*s*theta);
u         = u0;
phi       = func_influence(lamda,z,Cn2);
for j=1:Numz
      u1 = fft2(exp(1i*phi).*u);
      u1 = fftshift(u1);
      u  = ifft2(ifftshift(exp(1i*k*dz)*exp(-1i*dz*kr.^2/(2*k)).*u1));
end
 
%强度和相位图
[X,Y] = meshgrid(m2*dx);
uz    = griddata(x,y,u,X,Y);
A141

4.完整MATLAB

V

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/112237.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android NDK 中堆栈日志 add2line 的分析实践

文章目录目的常用的辅助工具分析步骤参考目的 Android NDK 中出现的 crash 日志分析定位,使用 addr2line 对库中定位so 动态库崩溃位置,定位到某个函数的具体的代码行。 常用的辅助工具 add2line,objdump,ndkstack 等等。本文主要…

一文深度揭开Redis的磁盘持久化机制

前言 Redis 是内存数据库,数据都是存储在内存中,为了避免进程退出导致数据的永久丢失,需要定期将 Redis 中的数据以数据或命令的形式从内存保存到本地磁盘。当下次 Redis 重启时,利用持久化文件进行数据恢复。Redis 提供了 RDB 和…

在linux上安装并初始化配置MariaDB支持远程登录

在linux上安装并初始化配置MariaDB支持远程登录一、环境准备二、启动MariaDB三、初始化MariaDB四、配置远程访问五、补充一些额外的MySql用户赋权限的语句一、环境准备 本文环境是Redhat7上自带的MariaDB, 在安装redhat系统时已经自动安装好了,如果需要自行安装的话…

Selenium 常用函数总结

Seleninum作为自动化测试的工具,自然是提供了很多自动化操作的函数, 下面列举下个人觉得比较常用的函数,更多可见官方文档: 官方API文档: http://seleniumhq.github.io/selenium/docs/api/py/api.html 1) 定位元素 f…

【源码共读】axios的46个工具函数

所有工具函数 还是老样子,先看看axios的工具函数有哪些,先心里有个印象,然后再逐个分析。 直接拉到最下面,可以看到axios的工具函数都是统一导出的: export default {isArray, // 判断是否是数组isArrayBuffer, // …

[机缘参悟-95] :不同人生和社会问题的本质

事情的本质是物极必反(轮回、周期) 社会的本质是优胜劣汰(迭代、发展) 道德的本质是伦理秩序(未定、秩序) 战争的本质是资源占用(弱肉、强食) 商业的本质是价值交换 金钱的本质…

同事这样用Redis,把我害惨了

首先说下问题现象:内网sandbox环境API持续1周出现应用卡死,所有api无响应现象 刚开始当测试抱怨环境响应慢的时候 ,我们重启一下应用,应用恢复正常,于是没做处理。但是后来问题出现频率越来越频繁,越来越多…

MySQL实现主从复制(Windows)的明细操作步骤

文章目录一、教学视频地址二、设计思路三、具体步骤一、教学视频地址 视频地址:视频链接 二、设计思路 准备两个5.7版本的MySQL,一个用作主数据库,另一个用作从数据库。 把主数据库做为写入数据库,从数据库作为读数据库。 三…

【云原生 Kubernetes】基于 KubeAdmin 搭建k8s集群

一、前言 在上一篇,我们基于minikube搭建了一个单节点的k8s集群,作为学习和练习使用的话问题不大,但如果想深入学习和了解k8s的相关技术体系,还是需要搭建真正的集群才能更接近生产环境的应用,本篇将基于KubeAdmin&…

深度学习炼丹-数据预处理和增强

前言一,Normalization 概述 1.1,Normalization 定义1.2,什么情况需要 Normalization1.3,Data Normalization 方法1.4,示例代码 二,normalize images 2.1,图像 normalization 定义2.2&#xff0c…

Spring-Cloud-Gateway-07

前言 1、什么是网关 网关是微服务最边缘的服务,直接暴露给用户,用来做用户和微服务的桥梁 没有网关:客户端直接访问我们的微服务,会需要在客户端配置很多的ip:port,如果user-service并发比较大&#xff0c…

深度学习YoloV3案例

目录1 数据获取2 TFrecord文件2.1 什么是TFrecord文件2.2 将数据转换为TFRecord文件2.3 读取TFRecord文件2.4 数据处理3 模型构建4 模型训练4.1 损失函数的计算4.2 正负样本的设定4.3 模型训练4.3.1 获取数据集4.3.2 加载模型4.3.3 模型训练5 模型预测6 总结1 数据获取 根据要…

计算机工作原理简单介绍

文章目录一、冯诺依曼体系结构二、CPU基本工作流程CPU工作流程三、操作系统操作系统的基本功能四、进程(process)/任务(task)操作系统如何管理进程描述一个进程(进程的相关属性)组织若干进程CPU的分配内存的…

推荐系统,计算广告模型论文,代码与数据集汇总

Rec-Models 更多细节参考项目:https://github.com/JackHCC/Rec-Models https://github.com/JackHCC/Rec-Models 📝 Summary of recommendation, advertising and search models. Recall Papers PaperResourceOthers[2019阿里SDM模型] SDM: Sequen…

Zebec Chain缘何能成为新晋应用链,熊市下又为何值得我们关注?

流支付生态 Zebec 正处于发展的火热阶段,Zebec此前于12月20日举办的为期3天的Web3.0 TechHive Summit 2022 大会,目前已经落幕,此次大会参会项目多达34个囊括了公链、钱包、DID、GameFi等多个主流行业赛道,并围绕行业安全、发展趋…

ConvLSTM时空预测实战代码详解

写在前面 时空预测是很多领域都存在的问题,不同于时间序列,时空预测不仅需要探究时间的变化,也需要关注空间的变化。许多预测问题都只片面的关注时间问题,如预测某人未来3年患某种病的概率,食堂就餐人数等&#xff0c…

CSS--圆角边框

单独对四个角进行设置: boder-top-left-radius:30px; //左上角 boder-top-right-radius:30px; //右上角 boder-bottom-left-radius:30px; //右下角 boder-bottom-right-radius:30px&…

群晖 Sonology NAS DS920+ 拆机装机方法

文章内容:群晖 Sonology NAS DS920 拆机方法 关键词组:群晖,Sonology, nas, ds920, 拆机, 外壳 使用软件:无 虚拟环境:无 操作系统:无 目录一、事件起因三、拆装机方法一、事件起因 起初,由于机…

OpenCV环境下实现图像任意角度旋转的原理及代码

OpenCV环境下实现图像任意角度旋转的原理及代码 实现图像任意角度旋转的原理如下: Step01-把图像原点从左上角转换到旋转中心点。 Step02-利用极坐标系计算出旋转后各点的坐标。 Step03-确定旋转后图像的左边界、右边界、上边界、下边界,进而得出旋转后…

计数排序 [数据结构与算法][Java]

计数排序 计数排序和基数排序都是桶排序的一种应用 适用场景: 量大但是范围小 比如对10000个数进行排序, 但是这10000个数中只有10种数字(0 - 9)典型题目: 某大型企业数万名员工年龄排序如何快速得知高考名次(腾讯面试) 这里我们以某大型企业数万名员工年龄排序来进行一个…