0
点赞
收藏
分享

微信扫一扫

Matlab实现相位屏

1 简介

Matlab实现相位屏

2 部分代码

function [ phase_low ] = low_phase_screen( r0, N, D, L0, l0 )
%% 低频补偿
delta = D/N;%网格间距
[x y] = meshgrid(((-N/2 : N/2-1)+0.5) * delta);% 空间网格 [m]
%% 取高频屏大小-进行初始化
[ phase_high ] = High_phase_screen( r0, N, D, L0, l0 );% 高频相位屏
phz_lo = zeros(size(phase_high)); %初始化为0
%%
for p = 1:6
% p :代表次谐波阶数
del_f = 1 / (3^p*D); %频率网格间隔 Δf[1/m]
fx = ((-3 : 2)+0.5) * del_f; %低频区域分成六等分(确定采样位置)
[fx, fy] = meshgrid(fx); %6X6=36--以Δf绘制网格坐标
[th, f] = cart2pol(fx, fy); % 直角坐标->极坐标
a1 = 1.802;
a2 = 0.254; %谱密度函数系数值
fl = 3.3/(l0*2*pi); % 内尺度对应空间频率[1/m]
f0 = 1/L0; % 外尺度对应空间频率 [1/m]
PSD_phi = 0.023.*r0.^(-5/3) .* (1 + a1.*(f./fl) -a2.*(f./fl).^(7/6)) .* exp(-(f./fl).^2) ...
./ (f.^2 + f0^2).^(11/6); %折射率-功率谱密度函数
%增加低频量--6x6
PSD_phi(3,3:4) = 0; %第三行的第三列和第四列为0
PSD_phi(4,3:4) = 0; %第四行的第三列和第四列为0 ,6*6的区域内,最中间的区域四个顶点均为0
cn = (randn(6) + 1i*randn(6)) ...
.* sqrt(PSD_phi)*del_f; %傅里叶系数进行随机取值
SH = zeros(N); %初始化变量-如下进行叠加
for ii = 1:36
SH = SH + cn(ii) ...
* exp(1i*2*pi*(fx(ii)*x+fy(ii)*y));
end
phz_lo = phz_lo + SH; %累积次谐波
end
phase_low = real(phz_lo) - mean(real(phz_lo(:)));%均取实部进行计算??为什么取平均做减法
end

3 仿真结果

Matlab实现相位屏_d3

Matlab实现相位屏_matlab代码_02

Matlab实现相位屏_matlab代码_03

4 参考文献

[1]陆长明, 黄惠明, 饶长辉,等. 大气相位屏的协方差冲激函数产生法[J]. 光电工程, 2005, 32(8):4.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

Matlab实现相位屏_d3_04


举报

相关推荐

0 条评论