MATLAB仿真:基于GS算法的经大气湍流畸变涡旋光束波前校正仿真

GS算法流程

GS(Gerchberg-Saxton)相位恢复算法是一种基于傅里叶变换的最速下降算法,可以通过输出平面和输入平面上光束的光强分布计算出光束的相位分布。图1是基于GS算法的涡旋光束畸变波前校正系统框图,在该框图中,已知输入平面涡旋光束振幅和相位以及输出平面的涡旋光束振幅,经过算法多次迭代运算并满足误差需求后可以得到需要的校正相位信息,进而实现校正效果。

图1:GS算法流程[1]

GS算法恢复涡旋光束畸变波前的具体流程如下[2]:

  1. 将LG涡旋光束作为输入平面初始参考光,计算出参考光的振幅和相位。
  2. 将初始参考光束进行快速傅里叶变换,得到其幅度谱A0(kx,ky)和相位谱Φ0(kx,ky)。
  3. 使用畸变光束的幅度谱替换A0(kx,ky),将替换后的幅度谱与相位谱Φ0(kx,ky)组合成新的函数,再通过傅里叶逆变换即可得到光束的空域幅度a0(x,y)和相位H0(x,y)。
  4. 用参考光的振幅代替a0(x,y),并与H0(x,y)组合成新函数,将新的函数做快速傅里叶变换后得到新的幅度谱A1(kx,ky)和相位谱Φ1(kx,ky)。将A1(kx,ky)与畸变涡旋光束的幅度谱做差,若满足误差则输出H(x,y),否则就使用新的幅度谱和相位谱进行下一轮的计算。
  5. 得出预估相位与理想相位差距,对畸变相位进行校正。

仿真结果展示

文章中所用的光束为拉盖尔高斯涡旋光束,光束经大气湍流MATLAB仿真详见之前的文章:MATLAB仿真:涡旋光束经大气湍流后的光强及相位分布基于蒙特卡洛相位屏法

仿真参数:波长lambda=632.8e-9m;波失k = 2 * pi / lambda;束腰w=5e-3;拓扑荷l=3;外尺度L0=1.0m;内尺度l0=1.0e-3;传播距离z=1000m;湍流屏张数n=10

如图2展示了不同大气湍流下迭代次数为500轮的GS算法校正结果。由图可以看出GS算法可以有效校正大气湍流带来的光束畸变。图3展示了在不同迭代次数较强湍流中涡旋光束的校正结果。可以看到随着迭代次数增加,校正效果越好,能量越集中。

图2不同大气湍流下迭代次数为500轮的GS算法校正结果。

图3:不同迭代次数较强湍流中涡旋光束的GS校正结果。

参考文献:

  1. 《大气湍流下涡旋光束波前校正及模式检测研究》
  2. 《液晶相控阵波前相位校正算法研究》

MATLAB部分仿真代码:

喜欢的话给小编点个关注点个赞

有任何问题可以在评论区留言

更多完整代码进T店博士生牛马赚点小钱
clc;clear;close;
%% 坐标
N=512;
delta1=0.6/N;
[x,y]=meshgrid((-N/2:1:N/2-1).*delta1);
[phi,r1]=cart2pol(x,y);
deltaf1=1/(N*delta1);
%% 光束参数
lambda=632.8e-9;%m
k = 2 * pi / lambda;
w=5e-3;
l=3;
%% 模拟测量面经过湍流的LG光束光强
Cn2=1.0e-13;
L0=1.0;
l0=1.0e-3;
z=1000;
n=10;
dz=z/n;
r0=(0.423 * k^2 * Cn2 *dz) .^(-3/5);
E1= (sqrt(r1.^2)./w).^abs(l).*exp(-(r1.^2)./(w.^2)).*exp(1i.*l.*phi);
%% 初始光场假定未经过湍流的自由空间传播光强
E0= (sqrt(r1.^2)./w).^abs(l).*exp(-(r1.^2)./(w.^2)).*exp(1i.*l.*phi);
[xn, yn, G0]=ang_spec_prop(E0,lambda,delta1,delta1,z);
%gs循环
max_iter = 1000;%迭代次数
iter = 0;
epsilon = 1e-3;
ER = inf;figure(1)
subplot(2,3,1)
imagesc(I_vac);axis square;title('未畸变光强','FontSize',15);axis off
subplot(2,3,2 )
imagesc(I_tur);axis square;title('畸变光强','FontSize',15);axis off
subplot(2,3,3 )
imagesc(I_correct);axis square;title('校正后光强','FontSize',15);axis off
subplot(2,3,4 )
imagesc(p0);axis square ; title('未畸变相位','FontSize',15);axis off
subplot(2,3,5 )
imagesc(p12);axis square;title('畸变相位','FontSize',15);axis off
subplot(2,3,6 )
imagesc(pcor);axis square;title('校正后的相位','FontSize',15);axis off

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

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

相关文章

数树数(中等难度)

题目: 解题代码: n,qmap(int,input().split())#分别输入层数和路径数量 for i in range(q):sinput()#输入“L”或“R”x1for j in s:if j "L":xx*2-1 #!!!规律else:xx*2print(x)

Vue3 内置组件之Teleport

文章目录 Vue3 内置组件之Teleport概述用法 Vue3 内置组件之Teleport 概述 Teleport 中文翻译为“瞬间移动”&#xff0c;顾名思义&#xff0c;在Vue3 中 <Teleport> 组件可以将组件中内容移动到指定的目标元素上。 用法 <script setup> import {ref} from &qu…

【我的 PWN 学习手札】IO_FILE 之 FSOP

FSOP&#xff1a;File Stream Oriented Programming 通过劫持 _IO_list_all 指向伪造的 _IO_FILE_plus&#xff0c;进而调用fake IO_FILE 结构体对象中被伪造的vtable指向的恶意函数。 目录 前言 一、glibc-exit函数浅析 二、FSOP 三、Largebin attack FSOP &#xff08;…

DDcGAN_多分辨率图像融合的双鉴别条件生成对抗网络_y译文马佳义

摘要&#xff1a; 在本文中&#xff0c;我们提出了一种新的端到端模型&#xff0c;称为双鉴别条件生成对抗网络&#xff08;DDcGAN&#xff09;&#xff0c;用于融合不同分辨率的红外和可见光图像。我们的方法建立了一个生成器和两个鉴别器之间的对抗博弈。生成器的目的是基于特…

springboot配置线程池

直接上代码 配置 定义一个配置类 创建一个springboot能扫描到的地方创建一个线程池配置类 配置信息 package com.example.demonew.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import or…

【君正T31开发记录】12.编译工具相关总结及介绍

移植交叉工具包的时候&#xff0c;发现这是很多工具的集合包&#xff1b;以及写makefile的时候&#xff0c;也需要了解下这些工具的作用及用法&#xff0c;这里总结记录一下常见的工具及相关用法。 g C编译器&#xff0c;用于编译C源代码文件&#xff0c;这个很常见&#xff0…

List-顺序表--2

目录 1、ArrayList 2、ArrayList构造方法 3、ArrayList常见方法 4、ArrayList的遍历 5、ArrayList的扩容机制 6、ArrayList的具体使用 6.1、杨辉三角 6.2、简单的洗牌算法 1、ArrayList 在集合框架中&#xff0c;ArrayList 是一个普通的类&#xff0c;实现了 List 接口…

lambda用法及其原理

目录 lambda形式lambda用法1.sort降序2.swap3.捕捉列表 习题解题 lambda形式 [capture-list](parameters)->return type{function boby}[capture-list]&#xff1a;[捕捉列表]用于捕捉函数外的参数&#xff0c;可以为空&#xff0c;但不能省略&#xff1b;(parameters) &am…

基于ASP.NET的动漫网站

一、系统架构与技术实现 系统架构&#xff1a;基于ASP.NET的MVC框架构建&#xff0c;实现网站的层次结构&#xff0c;使得网站更加易于维护和扩展。 技术实现&#xff1a;利用ASP.NET的技术特点&#xff0c;如强大的后端开发能力、丰富的UI控件等&#xff0c;结合前端技术如HT…

Visual studio code编写简单记事本exe笔记

安装扩展cmake tools c/c c/c Extension pack CMakeLists.txt cmake_minimum_required(VERSION 3.20) project(NotepadApp)set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON)# Windows specific settings if(WIN32)set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)s…

Linux 35.6 + JetPack v5.1.4之编译 pytorch升级

Linux 35.6 JetPack v5.1.4之编译 pytorch升级 1. 源由2. 升级步骤1&#xff1a;获取二进制版本步骤2&#xff1a;安装二进制版本步骤3&#xff1a;获取torchvision步骤4&#xff1a;安装torchvision步骤5&#xff1a;检查安装版本 3. 使用4. 补充4.1 torchvision版本问题4.2 …

计算机网络--根据IP地址和路由表计算下一跳

一、必备知识 1.无分类地址IPV4地址网络前缀主机号 2.每个IPV4地址由32位二进制数组成 3. /15这个地址表示网络前缀有15位&#xff0c;那么主机号32-1517位。 4.地址掩码&#xff08;子网掩码&#xff09;&#xff1a;所对应的网络前缀为1&#xff0c;主机号为0。 5.计算下…

插入式微型机顶盒来了

快科技1月6日消息&#xff0c;据国家广播电视总局今日消息&#xff0c;国家广播电视总局为首款以插入式微型机顶盒品类通过入网检测的设备颁发了入网认定证书。 这是插入式微型机顶盒批量部署进程中的又一大进展。同时&#xff0c;广播电视科学研究院依据行业标准建成了插入式…

XXL-RPC v1.8.1 | RPC服务框架

Release Notes 1、【安全】序列化安全性增强&#xff0c;默认开启package安全空间机制&#xff1b;2、【扩展】序列化扩展性增强&#xff0c;支持自定义序列化package白名单&#xff1b;3、【优化】序列化类型主动检测&#xff0c;提升问题定位效率&#xff1b;4、【能力】服务…

前端路由layout布局处理以及菜单交互(三)

上篇介绍了前端项目部署以及基本依赖的应用&#xff0c;这次主要对于路由以及布局进行模块化处理 一、 创建layout模块 1、新建src/layout/index.vue <template><el-container class"common-layout"><!-- <el-aside class"aside">&l…

Spring Boot(4)使用 IDEA 搭建 Spring Boot+MyBatis 项目全流程实战

文章目录 一、⚡搞个引言二、⚡开始搭建 Spring Boot 项目吧&#xff01;2.1 启动 IDEA 并创建新项目2.2 选择项目依赖2.3 完成项目创建 三、&#x1f4d8;项目结构剖析四、✍配置数据库连接五、✍ 创建 MyBatis 相关组件5.1 实体类&#xff08;Entity&#xff09;5.2 Mapper 接…

【数据可视化-11】全国大学数据可视化分析

&#x1f9d1; 博主简介&#xff1a;曾任某智慧城市类企业算法总监&#xff0c;目前在美国市场的物流公司从事高级算法工程师一职&#xff0c;深耕人工智能领域&#xff0c;精通python数据挖掘、可视化、机器学习等&#xff0c;发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…

141.《mac m1安装mongodb详细教程》

文章目录 下载从官网下载安装包 下载后双击解压出文件夹安装文件名修改为 mongodb配置data存放位置和日志log的存放位置启动方式一方式二方式二:输入mongo报错以及解决办法 本人电脑 m2 pro,属于 arm 架构 下载 官网地址: mongodb官网 怎么查看自己电脑应该下载哪个版本,输入…

frameworks 之 Winscope 工具

frameworks 之 Winscope 工具 1. 手机端开启2. 加载追踪的文件2.1 Android12 3. 分析文件 Winscope 是一款 Web 工具&#xff0c;可以让用户在动画和转换期间和之后记录、重放和分析多个系统服务的状态。Winscope 将所有相关的系统服务状态记录在一个跟踪文件中。使用带有跟踪文…