【光学】基于matlab模拟拉盖尔高斯光束叠加相位

简介: 【光学】基于matlab模拟拉盖尔高斯光束叠加相位

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信      无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机

⛄ 内容介绍

1.1 拉盖尔高斯光束原理

拉格尔高斯光束(Laguerre-Gauss beam)是一种特殊的激光束,其具有角动量和轨道角动量,因此具有较好的旋转、聚焦和传输特性,在光学成像、信息传输、光纤通信等领域得到了广泛研究和应用。在实际应用中,为了进一步提高拉格尔高斯光束的性能,可以采用叠加相位的方法,将多个拉格尔高斯光束进行组合。

具体来说,可以使用空间光调制器(Spatial Light Modulator, SLM)对不同的拉格尔高斯光束施加不同的相位调制,然后将它们叠加在一起。这样可以形成一个新的复合光束,其具有更优秀的成像、传输和调制性能。

在具体的实现过程中,需要先设计好叠加方案,确定每个拉格尔高斯光束的参数及相位调制函数。然后,通过SLM将这些调制函数叠加在一起,并将其输出到目标平面上。最后,可以利用光学相干检测技术对复合光束进行成像和分析,以验证其性能和效果。

1.2 拉盖尔高斯光束产生的基本流程

  1. 激光源:首先需要一个激光器作为光源,可以是Nd:YAG、CO2、半导体激光器等。
  2. 空间滤波:使用透镜或光栅等光学元件对激光进行空间滤波,以消除非基模(higher-order mode)成分。
  3. 模式转换:通过空间光调制器(SLM)、光学棱镜或反射镜等光学元件,将高斯光束转变为拉盖尔高斯光束。
  4. 调制相位:利用电子控制技术,对SLM或反射镜进行相位调制,生成所需的拉格尔高斯光束。
  5. 测量与控制:使用光功率计、干涉仪、自适应光学系统等技术,对光束进行精确的测量和控制,提高光束的稳定性和重复性。
  6. 应用:将拉盖尔高斯光束应用于光学成像、信息传输、量子通信、光纤陀螺等领域,发挥其独特的优势和特性。

⛄ 部分代码

clear all

close all

clc

%% Parameters

fd=100;                               % frequency doppler

ts=1e-3;

t=[0:ts:0.1-ts];

N=length(t);                          % 2M+1 complex Gaussian random variables

M=floor((N-1)/2);  

f0=fd/M;

ind=f0;                               % frequency index

fmax=1e3;                             % maximum simulation frequency

fmin=-fmax;                           % minimum simulation frequency

fr=[fmin:ind:fmax];                   % frequency range for simulation

zeta=0.175;                           % Underdamp  value for zeta

w0=2*pi*fd/1.2;                       % Natural angular frequency

%% Third order filter

% Coefficients

a=w0^3;

b=(2*zeta*w0)+w0;

c=(2*zeta*(w0^2))+(w0^2);

%% building third order Filter in s-domain z-domain w-domain and f-domain

syms f s w;                               % define symbols

tf_s=tf(a,[1 b c a]);                     % 3rd order tf in S domain

tf_z=c2d(tf_s,ts,'tustin');               % tustin: bilinear transformation

h_s=(a/((s^3)+(b*(s^2))+(c*s)+a));        % 3rd order filter in S Dommain

h_W=subs(h_s,s,1i*w);                     % 3rd order filter in w Dommain

h_f=subs(h_W,w,(2*pi*f));                 % 3rd order filter in f Dommain

%%  AutoCorrelation

hv=subs(h_f,f,fr);                         % filter gain for each frequency

hv_double=double(hv);                      % convert gains into double

Autocorr=xcorr(hv_double);                 % Autocorrelation

Autocorr=real(Autocorr*(1/max(Autocorr)));  % normalize AutoCorr

%% choose the values from AutoCorrelation to plot

L=ceil(length(Autocorr)/4);          

AutocorrPlot=Autocorr(L:end-L+1);  % remove the first and fourth quarters

plot(fr/fd,AutocorrPlot)           % Plot AutoCorrelation with rexpect to f/fd

title('Third Order Filter (fd=100Hz, w0=2*pi*fd/1.2 , zeta=0.175)')

xlabel('f/fd')

ylabel('AutoCorrelation')

xlim([-5 5])

grid on

[pks,locs] = findpeaks(AutocorrPlot);  % find peak values and their locations

hold on

scatter(fr(locs)./fd,AutocorrPlot(locs),'filled','blue')

stem(fr(locs)./fd,AutocorrPlot(locs),':r','linewidth',2)


%% plot autcorrelation at positive side

L2=ceil(length(AutocorrPlot)/2);            

AutocorrPlot_P=AutocorrPlot(L2:end);        % Positive side of autocorr.

fr_P=fr(L2:end);                            % Positive frequencies

figure

plot(fr_P/fd,AutocorrPlot_P)

title('Third Order Filter (fd=100Hz, w0=2*pi*fd/1.2 , zeta=0.175)')

xlabel('f/fd (positive frequencies)')

ylabel('AutoCorrelation at Positive frequencies')

xlim([0 5])

grid on


%% using autocorrelatio function

figure

autocorr(hv_double,length(hv_double)-1);

% PSD

a=abs((hv_double).^2);

figure

plot(fr/fd,a)

xlim([-2 2])

title('Third Order Filter (fd=100Hz, w0=2*pi*fd/1.2 , zeta=0.175)')

xlabel('fr/fd')

grid on

ylabel('PSD')

[pks,locs] = findpeaks(a);

% max_pks_L=locs(find(max(pks)));

hold on

scatter(fr(locs)/fd,a(locs),'filled','r')

stem(fr(locs)/fd,a(locs),'filled','.-.r','linewidth',1.5)

plot([-2 2],[max(a) max(a)],'.-.green','linewidth',1.5)



%% Impulse response of Digital Filter (channel)

[numZ denZ ts]=tfdata(tf_z,'v');

figure

[h,n] = impz(numZ,denZ);

%% find n0 : at this point h(n) become negligible

[pks,locs] = findpeaks(h);

nv=0.01;                  % negligible value  as a percentage of maximum value

b=find(pks>=(nv*max(pks)));

peak_no=min(pks(b));

n0=max(locs(b));

%% plot impulse response

subplot(2,1,1)

plot(n.*ts,h)

xlabel('time [sec]')

title('Impulse response of channel "3rd order filter" using plot')

grid

hold on

scatter(n0.*ts,peak_no,'filled','r')

subplot(2,1,2)

stem(n,h)

xlabel('n [samples]')

title('Impulse response of channel "3rd order filter using stem"')

grid

hold on

scatter(n0,peak_no,'filled','r')


%% normalizing the filter H(Z)

numZ_N=numZ./sqrt(sum(h.^2));      % normalize numerator of H(z)

tf_Z_N=tf(numZ_N,denZ,ts);


%% Generating an input signal with unit power => (power_db = 0)

% Ip is vector (n0 ,1) , simulation time:T=0.1 sec

IP_no=(1/(sqrt(2))).*(randn(1,n0)+(1j*randn(1,n0)));

IP_T=(1/(sqrt(2))).*(randn(1,length(t))+(1j*randn(1,length(t))));

IP=[IP_no IP_T];                      % first n0 bits for transient response

% Output from filter

Y=filter(numZ_N,denZ,IP);              % output from filter

Y_T=Y(n0+1:end);                       % output after removing transients

% Output in DB

Y_T_db=20.*log10(abs(Y_T));        % output when length of input=T  in dB

% root mean square value of input signals

rms_Y_T=rms(abs(Y_T));                  % rms of output length = T

rms_Y_T_db=20.*log10(abs(rms_Y_T));     % rms of output length = T in dB

ten_dB_below=rms_Y_T_db-10;

%% plotting output from filters

figure

plot(t,Y_T_db)

hold on

plot([t(1) t(end)],[rms_Y_T_db rms_Y_T_db],'.-.black','linewidth',1)

plot([t(1) t(end)],[ten_dB_below ten_dB_below],'.-.r','linewidth',1.5)

grid

legend('AMPLITUDE','RMS LEVEL','10 dB below RMS LEVEL')

xlabel('Time[sec]');

ylabel('Magnitude [dB]');


%% exact crossing and exact average fade duration in this run

[CN_PD_s CPV AFD_s FT]= Cross_N_PD(Y_T_db,ten_dB_below,ts);


disp('Simulation Result: Number of Crossing per 0.1 sec "PD: Positive Direction"')

CN_PD_s                       % simulation crossing number during 0.1 sec


disp({'Fraction of time when signal goes below specific level';'total duration of fade per second'})

FT

disp('Simulation Result: Average Fade Duration')

AFD_s=(round(AFD_s.*1e5))/(1e5);

title({'single realization of the Amplitude';strcat(' inthis run AFD=',num2str(AFD_s),'   LCN/0.1sec=',num2str(CN_PD_s))})


%% plot filled circles at crossing points in the positive direction

hold on

loc=find(CPV);

scatter(t(loc),ten_dB_below.*ones(1,length(loc)),'filled','blue')


%% Expectation of Level Crossing Rate in Ts time and Average Fade Duration

RowdB=ten_dB_below-rms_Y_T_db;

Row=10.^(RowdB/20);

disp('Theoretical LCR "Level Crossing Rate" ')

LCR=(sqrt(2*pi).*fd.*Row.*exp(-(Row.^2)))   % Expected level Crossing rate per second

disp('Theoretical AFD "Average Fade Duration" ')

AFD=(exp(Row.^2)-1)/((sqrt(2*pi)).*fd.*Row)

%% check rayleigh fading of Amplitude

figure

ksdensity(abs(Y_T))

title({'Distribution of Amplitude'; 'should be approximately like Rayleigh fading distribution'})

grid

%

figure

[x,tt]=ksdensity((angle(Y_T)));


l2=find(tt>pi);


plot(tt,x)

title('PDF of Angles');

grid on

xlabel('Angel "Radian"');

hold on

plot([tt(1) tt(end)],[1/(2*pi) 1/(2*pi)],'.-.r','linewidth',2)

legend('Distribution','1/(2*pi) level')

xlim([tt(1) tt(end)])

⛄ 运行结果

⛄ 参考文献

[1] 赵杰.多个拉盖尔--高斯光束叠加的光场分布特性[D].西安理工大学,2019.

[2] 王咏梅.金属超表面中拉盖尔—高斯光束的线性和非线性光学调控[D].南京大学,2018.

[3] 卿与三,吕百达,等.拉盖尔-高斯光束通过有硬边光阑光学系统的传输[J].激光技术, 26(3):3[2023-06-16].DOI:CNKI:SUN:JGJS.0.2002-03-004.

[4] 王帅会,陈家奇,顾国超.拉盖尔-高斯光束在non-Kolmogorov湍流中传输的数值模拟[J].光电工程, 2016, 43(4):5.DOI:10.3969/j.issn.1003-501X.2016.04.004.

[5] 蒋倩雯.拉盖尔—高斯光束的气动光学效应[D].南京理工大学,2019.

⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料


相关文章
|
7月前
|
机器学习/深度学习 算法
m基于深度学习的QPSK调制解调系统相位检测和补偿算法matlab仿真
m基于深度学习的QPSK调制解调系统相位检测和补偿算法matlab仿真
113 2
|
7月前
|
算法
【MATLAB】语音信号识别与处理:高斯加权移动平均滤波算法去噪及谱相减算法呈现频谱
【MATLAB】语音信号识别与处理:高斯加权移动平均滤波算法去噪及谱相减算法呈现频谱
274 0
|
4月前
|
Windows
基于MATLAB实现的OFDM仿真调制解调,BPSK、QPSK、4QAM、16QAM、32QAM,加性高斯白噪声信道、TDL瑞利衰落信道
本文通过MATLAB仿真实现了OFDM系统中BPSK、QPSK、4QAM、16QAM和32QAM调制解调过程,并在加性高斯白噪声信道及TDL瑞利衰落信道下计算了不同信噪比条件下的误比特率。
253 4
基于MATLAB实现的OFDM仿真调制解调,BPSK、QPSK、4QAM、16QAM、32QAM,加性高斯白噪声信道、TDL瑞利衰落信道
|
6月前
|
算法
m基于GA遗传优化的高斯白噪声信道SNR估计算法matlab仿真
**MATLAB2022a模拟展示了遗传算法在AWGN信道中估计SNR的效能。该算法利用生物进化原理全局寻优,解决通信系统中复杂环境下的SNR估计问题。核心代码执行多代选择、重组和突变操作,逐步优化SNR估计。结果以图形形式对比了真实SNR与估计值,并显示了均方根误差(RMSE),体现了算法的准确性。**
71 0
|
7月前
|
机器学习/深度学习 算法
m基于深度学习的64QAM调制解调系统相位检测和补偿算法matlab仿真
MATLAB 2022a仿真实现了基于深度学习的64QAM相位检测和补偿算法,有效应对通信中相位失真问题。通过DNN进行相位检测和补偿,降低解调错误。核心程序生成随机信号,模拟AWGN信道,比较了有无相位补偿的误码率,结果显示补偿能显著提升性能。
95 8
|
7月前
|
数据可视化
matlab用高斯曲线拟合模型分析疫情数据
matlab用高斯曲线拟合模型分析疫情数据
|
7月前
|
机器学习/深度学习 算法
m基于深度学习的32QAM调制解调系统相位检测和补偿算法matlab仿真
m基于深度学习的32QAM调制解调系统相位检测和补偿算法matlab仿真
121 1
|
7月前
|
机器学习/深度学习 算法
m基于深度学习的16QAM调制解调系统相位检测和补偿算法matlab仿真
m基于深度学习的16QAM调制解调系统相位检测和补偿算法matlab仿真
80 0
|
4月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
217 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
4月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
139 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现