有没有精通光束整形的能读懂

这一段程序,最后取得幅值后为什么还要平方?然后平方后那一句是什么意思?max取最大值的作用是什么?
还有我光能利用率算出来只有11%怎么办?要求是80%,是哪里出错了么?
光强不均匀性为什么是-100%?要求是20%该怎么达到?
求各位解答!谢谢!

clear
close all
tupian=imread('图片9.jpg');
tupian=rgb2gray(tupian); %灰度化处理
tupian = double(tupian)./255; % 归一化到 [0,1]变换为固定标准形式
% tupian(tupian<0.3)=0;
figure
imshow(tupian,[])%二维
figure
mesh(tupian)%三维
N=732;
% 生成高斯光束
beam_radius = 0.75e-3; % 入射光束半径
x1=linspace(-7.5e-4,7.5e-4,N);
y1=x1;
[X,Y] = meshgrid(x1,y1); % 生成网格
beam = exp(-(X.^2+Y.^2)/(beam_radius^2)); % 高斯分布的光强
beam=abs(beam);%绝对值
figure
mesh(beam)
wave_new=beam.*exp(i*2*pi*rand(N,N));%生成随机相位
% DOE参数
DOE_aperture = 1.5e-3; % 通光口径 (1.5 mm)
% 目标平面参数
target_distance = 175e-3; % 目标平面与DOE所在平面的距离 (175 mm)
outer_radius = 10.5e-3; % 外半径 (10.5 mm)
inner_radius = 7.5e-3; % 内半径 (7.5 mm)
polar_angle = 45; % 极角 (45°)
% % 算法参数
iterations=1000;%GS算法迭代次数
tolerance = 1e-6; % 收敛容差,前后两次迭代结果的差值
% 网格参数
R = sqrt(X.^2 + Y.^2);%平方根
% 生成目标平面光场分布
target_field = double(R >= inner_radius & R <= outer_radius & mod(atan2(Y, X), 2*pi) <= deg2rad(polar_angle));%mod求余,atan反正切函数,deg2rad从角度单位转换成弧度单位
% target_field = target_field / sum(target_field(:));
% 初始化DOE的相位
DOE_phase = 2 * pi * rand(N, N);
% 初始化误差数组
error_array = zeros(iterations, 1);%产生类零矩阵
% 循环整形
for ii = 1:50 % 循环 50 次
%% GS算法
sc1=fftshift(fft2(fftshift(wave_new))); % 傅里叶变换
sc1_fai=angle(sc1);
sc_1=tupian.*exp(i*sc1_fai);
sc2=fftshift(ifft2(fftshift(sc_1))); % 逆傅里叶变换
sc2_fai=angle(sc2);
wave_new=beam.*exp(i*sc2_fai);
end
wave_ft_mod = abs(fftshift(fft2(fftshift(wave_new)))); % 取得幅值
wave_ft_mod=wave_ft_mod.^2;
wave_ft_mod =wave_ft_mod ./max(max(wave_ft_mod ));
% 相位结构
figure
imshow(sc2_fai,[]),title('相位结构-二维')
figure
mesh(sc2_fai),title('相位结构-三维')
% 整形结果
figure
imshow(wave_ft_mod,[]),title('整形结果-二维')
figure
mesh(wave_ft_mod),title('整形结果-三维')
% 计算光能利用率与不均匀性
illumination_uniformity = min(wave_ft_mod) / max(wave_ft_mod);
energy_efficiency = sum(wave_ft_mod /sum(beam))* 100;
disp(['光能利用率: ', num2str(energy_efficiency), '%']);
disp(['光强不均匀性: ', num2str((illumination_uniformity) -1* 100), '%']);

1、最后取得幅值后要平方,是因为光场强度的大小与整形结果呈非线性关系,而平方可以放大差异,更易于观察和分析。平方后那一句代码是将整形结果归一化到[0,1]的范围内,max取最大值的作用是为了计算整形结果中每个像素点的相对亮度。
2、光能利用率只有11%,达不到要求的要求的80%,重点检查以下几方面:

1. 是否正确设置了DOE参数,如通光口径、目标平面距离、内外半径等。 
2. 光强和光束半径是否符合实际情况。 
3. 检查算法参数是否正确设置,如迭代次数和收敛容差等。
4. 检查是否存在误差项(error_array)。

光强不均匀性为-100%是因为整形结果中最小值为零,最大值非零,这导致了光强非常不均匀,即光强分布的最小值与最大值相差非常大。要达到20%的光强不均匀性,可以尝试优化DOE的设计,如增加DOE的支撑结构、调整通光孔径位置和大小等。同时,也可以考虑使用其他的整形算法或优化算法参数等方法来改进整形效果。

平方的目的是将幅值转换为光强。平方后的那一句是做个数据的归一化处理,使得数字区间为[0,1]。max的作用取最大值。光能利用率低可能是由于光束的能量分布不均匀导致的。光强不均匀性为-100%,说明光束中某些点的光强为0,而其他点的光强非常大,导致光束的能量分布非常不均匀。要达到20%的光强不均匀性要求,可以通过调整透镜的形状和位置等参数来优化光束整形方案,使光束的能量分布更加均匀

因为功率和振幅的关系是二次方的关系,因此需要对幅值平方才能计算出信号的功率

在给定的程序中,平方操作是为了计算光场的幅值。这是因为幅值表示光场的强度,而平方可以得到光场的能量密度。在某些应用中,能量密度是一个有用的度量,因此需要对幅值进行平方操作。

在程序中,wave_ft_mod = wave_ft_mod.^2这一句是对光场的幅值进行平方操作。

max(max(wave_ft_mod))这一句是用来获取整形结果中最大的幅值,它用于进行归一化操作。通过将整形结果的幅值除以最大幅值,可以将幅值范围缩放到[0, 1]之间。

光能利用率是通过计算整形结果和入射光束的比值来得到的。根据程序中的计算,光能利用率是通过将整形结果的幅值与入射光束的幅值进行相加,并将结果除以入射光束的总和来计算的。

如果你的光能利用率只有11%,而要求是80%,可能有以下几个可能的原因:

迭代次数不足:程序中使用了GS算法进行迭代,循环了50次。如果迭代次数不足,可能无法达到期望的整形效果。你可以尝试增加迭代次数,例如增加到1000次,看看能否改善结果。

收敛容差过大:程序中使用了收敛容差(tolerance)来判断算法是否收敛。如果容差设置过大,可能会导致算法提前终止,未能达到更好的整形效果。你可以尝试减小收敛容差,例如将容差设置为1e-9,看看是否有改善。

初始相位设置不当:程序中使用了随机相位来生成初始的光场。随机相位可能会导致整形过程中陷入局部最优解,无法得到较好的整形结果。你可以尝试使用其他的初始相位生成方法,例如使用光束展宽器(beam expander)生成平行光束作为初始光场。

至于光强不均匀性为什么是-100%,以及如何达到20%,需要查看程序中计算的细节,特别是涉及到光场的归一化操作、阈值设置等。

  1. 平方的目的是将幅值转换为光强,因为光强与幅值的平方成正比。平方后的那一句是将幅值归一化到 [0,1] 的固定标准形式。max取最大值的作用是将归一化后的幅值中最大值设为1,方便后续计算光能利用率和光强不均匀性。

  2. 光能利用率只有11%可能是因为整形结果的光强分布不均匀,或者是光束的入射角度不合适。可以尝试调整DOE的参数,或者使用更优化的整形算法。

  3. 光强不均匀性为-100%可能是因为整形结果的光强分布完全不均匀,即最小值为0,最大值为非0值。要达到20%的光强不均匀性,可以尝试调整DOE的参数,或者使用更优化的整形算法。

图片9.jpg在哪里