模拟哈特曼波前探测器

这是模拟哈特曼波前探测器的另一份代码,这里不需要设置微透镜的参数。

波前 ==> 光点,使用的是 离散一维DFT对应的fft(,),而不是 二维FFT对应的 fft2(),最大的优点是运算速度极快,其原因是 不需要通过双循环分别对 某个子透镜形成光点处理,利用并行运算直接得到整个微透镜的最终形成的光点阵。

也可以参考OOMAO中的哈特曼波前探测的模拟源码,源码见:

GitHub - rconan/OOMAO: Object-Oriented, Matlab & Adaptive Optics

clc;clear all; close all
% function wavePrgted = propagateThrough1(obj,src_in)
%{
for a given wave of size [n, n],   full width at half maximum (FWHM)
nyquistSampling = 1, means 2 pixels per fhwm obtained by setting fftPad = 2,
FHWM 占据两个像素,可通过fftPad = 2 完成设置
fieldStopSize should be set to default 单子透镜分辨率 = n/nLenslet;
        
nyquistSampling = 0.5, means 1 pixels per fhwm obtained by setting fftPad = 1, 
fieldStopSize should be set to default n/nLenslet/nyquistSampling/2

下面用的是 fft(A,) 而不是使用fft(fftshift(A) , ),
fft(),操作使用 有用的信息在四周,而不是中央,故
v((0:nLensletImagePx-1)+centerIndex-halfLength) ...
                    = false; 
半宽高度的范围就是在四周,v设置mask的时候就中心部分的非半宽高度区域内的数据 清除掉 

%}   

nLenslet            = 10;           % 微透镜个数
nLensletImagePx     = 10;           % 单个子透镜分辨率
nLensletsImagePx    = nLenslet * nLensletImagePx;

%% 给出一个湍流波前,必须是弧度单位。 波长为1.215um,==》 rad,乘以系数0.1934

real_coe = [ ...
    -0.0804, 1.5517,-1.7531, 0.7195, 0.3470, 0.1209, 0.0477, 0.4413, 0.0409,-0.0088...
    -0.1640, 0.0846,-0.0254, 0.0734,-0.1656,-0.2289, 0.1348,-0.0130, 0.062
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值