2301_77191194 2023-06-02 00:46 采纳率: 37.5%
浏览 58
已结题

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

这一段程序,最后取得幅值后为什么还要平方?然后平方后那一句是什么意思?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), '%']);

  • 写回答

6条回答 默认 最新

  • 希望代码都能跑 2023-06-02 13:06
    关注
    获得1.05元问题酬金

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

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

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

    评论

报告相同问题?

问题事件

  • 系统已结题 6月10日
  • 创建了问题 6月2日