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.pswp.cn/web/65255.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/65255.shtml
英文地址,請注明出處:http://en.pswp.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)

高效內存管理與調試技巧:深入解析 AddressSanitizer

在現代 C開發中,內存管理是一個至關重要但也容易出錯的領域。即使使用了智能指針和其他高效工具,復雜的項目仍可能出現內存泄漏、非法訪問等問題。為了解決這些問題,Google 開發了一個強大的工具——AddressSanitizer (ASan)。本文將詳細介紹…

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;…

函數指針的用法

函數指標一些相關的用法和注意事項。以下將詳細說明&#xff1a; 1. 基本寫法: 這是最常見且明確的寫法&#xff0c;尤其在處理重載函數時非常有用。 void (GirlFriend::*girl2)(QString) &GirlFriend::hungry;void: 指標所指向的函數的回傳型別。(GirlFriend::*): 表示…

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…

如何讓面向應急管理的多智能體具備自主決策能力

現代應急管理面對的是復雜、多變、跨部門的災害與事故場景——從自然災害&#xff08;洪水、地震、臺風、火災&#xff09;到公共安全事件&#xff08;疫情、重大安全事故&#xff09;&#xff0c;都需要在極短時間內進行快速響應和全局協同。傳統的集中式指揮模式雖然有效&…

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…

用 HTML5 Canvas 和 JavaScript 實現流星雨特效

最近在研究前端動畫效果時,實現了一個超酷的流星雨特效,今天來和大家分享下具體實現過程。 1,整體實現思路 這個流星雨特效主要由 HTML、CSS 和 JavaScript 協同完成。HTML 搭建基礎結構,CSS 負責頁面樣式設計,JavaScript 實現星星和流星的動態效果。 效果展示: 用 HTM…

AI中的神經元與權重矩陣之間的關系;神經元連接角度看行和列的意義

AI中的神經元與權重矩陣之間的關系 目錄 AI中的神經元與權重矩陣之間的關系神經元連接角度看行和列的意義AI中的神經元概念 在人工智能領域,特別是神經網絡中,神經元是基本的計算單元,它是對生物神經元的一種抽象模擬。就像生物神經元接收來自其他神經元的電信號,經過處理后…

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.計算下…

歐幾里得算法(簡單理解版,非嚴格證明)

歐幾里得算法用于求解兩個整數的最大公約數&#xff0c;又稱為輾轉相除 依據的基本定理&#xff1a; GCD(a,b)GCD(a%b,b) 證明&#xff1a; 對于搞理論的人可能需要會嚴格證明&#xff0c;但是對于我們一般人而言&#xff0c;只要能理解其原理并記住即可&#xff0c;后者實際上…

插入式微型機頂盒來了

快科技1月6日消息&#xff0c;據國家廣播電視總局今日消息&#xff0c;國家廣播電視總局為首款以插入式微型機頂盒品類通過入網檢測的設備頒發了入網認定證書。 這是插入式微型機頂盒批量部署進程中的又一大進展。同時&#xff0c;廣播電視科學研究院依據行業標準建成了插入式…