引用激光光束传输与谐振腔仿真代码包ABCDRez的内容
文档阅读:
激光光束传输与谐振腔仿真ABCDRez_abcdrez csdn-CSDN博客
文件下载:
Laser Beam Propagation and Resonator Simulation ABCDRez - File Exchange - MATLAB Central
https://download.csdn.net/download/qq_42712244/89533054
2.1.5 光束拟合
如前所述,高斯光束的束宽由式2.1.5.1描述,M2因子由式2.1.5.2定义。
···(式2.1.5.1)
···(式2.1.5.2)
而光斑大小常采用光强的二阶矩描述。
······(式2.1.5.3)
······(式2.1.5.4)
其中、是光强的一阶矩,分别表示为
······(式2.1.5.5)
仿真中常取为零。
根据上述理论,编辑函数D4sigmaofI和D4sigmaofIr通过截面定义束宽。
[wx,wy]=D4sigmaofI(XX,YY,Iz)
wr=D4sigmaofIr(Iz)
|
调用M2FitZ函数通过不同位置的束宽拟合光束。
[w03m,theta03m,L03m,M03m]= M2FitZ(lZ, wZ,lambda)
|
% 在直角坐标系下
% 输入一个光强矩阵
% 输出两个方向上的光腰
function [wx,wy]=D4sigmaofI(XX,YY,Iz)
P=sum(sum(Iz));
sigmax2=1/P*sum(sum(XX.^2.*Iz));
sigmay2=1/P*sum(sum(YY.^2.*Iz));
% sigmaxy2=1/P*sum(sum(XX.*YY.*Iz));
wx=sqrt(sigmax2*4);
wy=sqrt(sigmay2*4);
end
%% 版本信息
% 作者: Quincy Howard
% 联系方式: quincy.hd@qq.com
% 文件信息更新平台为 matlab云文件、GitHub、CSDN博客、知乎
% 若使用请注明来源
% 最后编辑于 2024 年 07 月 10 日
% 在柱坐标系下
% 输入光强函数
% 输出光腰
function wr=D4sigmaofIr(Iz)
P=int(Iz*(symvar(Iz)),[0,inf]);
sigma2=1/P*int( Iz* (symvar(Iz))^3 ,[0,inf]);
wr=sqrt(2)*sqrt(sigma2);
end
%% 版本信息
% 作者: Quincy Howard
% 联系方式: quincy.hd@qq.com
% 文件信息更新平台为 matlab云文件、GitHub、CSDN博客、知乎
% 若使用请注明来源
% 最后编辑于 2024 年 07 月 10 日
% M2FitZ
function [w03m,theta03m,L03m,M03m]= M2FitZ(lZ, wZ,lambda)
%% 拟合
[xData, yData] = prepareCurveData( lZ, wZ );
[wZmin,wZmin_n]=min(wZ);
[wZmax,wZmax_n]=max(wZ);
% 设置 fittype 和选项。
ft = fittype( 'sqrt(w^2+theta^2*(x-L0)^2)', 'independent', 'x', 'dependent', 'y' );
opts = fitoptions( 'Method', 'NonlinearLeastSquares' );
opts.Display = 'Off';
opts.Robust = 'LAR';
% [L0 theta w]
opts.Lower = [-Inf 0 0];
opts.StartPoint = [lZ(wZmin_n), (wZmax-wZmin)/(lZ(wZmax_n)-lZ(wZmin_n)), wZmin];
% 对数据进行模型拟合。
[fitresult, ~] = fit( xData, yData, ft, opts );
w03m=fitresult.w;
theta03m=fitresult.theta;
L03m=fitresult.L0;
%默认在空气中折射率nn=1
nn=1;
M03m=(w03m*theta03m*pi*nn)/(lambda);
% % 绘制数据拟合图。
% figure( 'Name', 'fM2' );
% h = plot( fitresult, xData, yData );
% legend( h, 'wZ vs. lZ', 'fM2', 'Location', 'NorthEast', 'Interpreter', 'none' );
% % 为坐标区加标签
% xlabel( '位置:lZ', 'Interpreter', 'none' );
% ylabel( '光斑大小:wZ', 'Interpreter', 'none' );
% title(sprintf('M2=%.3f',M03m));
% grid on
end
%% 版本信息
% 作者: Quincy Howard
% 联系方式: quincy.hd@qq.com
% 文件信息更新平台为 matlab云文件、GitHub、CSDN博客、知乎
% 若使用请注明来源
% 最后编辑于 2024 年 07 月 10 日