本文基于光学原理,用Matlab实现高斯光束产生。
Project Code
% 作者:ZQJ
% 日期:2021.7.21 星期三
%***********************模拟高斯光图样**************************
clear, clc, close all;
lamda = 1550e-9;
gaussian_I = f_Gaussian_beams(1e-3,0.02,lamda,8e-3,8e-3,1024,1024);
subplot(1,2,1),imagesc(gaussian_I); % 2D
x_pos = linspace(-8e-3/2, 8e-3/2, 1024);
y_pos = linspace(-8e-3/2, 8e-3/2, 1024);
[X,Y] = meshgrid(x_pos, y_pos);
[theta,rho]=cart2pol(X,Y); % 3D
subplot(1,2,2),mesh(X,Y,gaussian_I),colormap jet;
Function Code
% 作者:ZQJ
% 日期:2021.7.21 星期三
%***********************高斯光束产生函数**************************
function Gaussian_I = f_Gaussian_beams(w0,z,lamda,x_length,y_length,Nx,Ny)
% w0: 束腰半径
% z: 传输距离
% lamda: 波长
% x_length: 观察屏x方向长度
% y_length: 观察屏y方向长度
% Nx,Ny: x,y方向等分割数目
% Gaussian_I: 输出光强分布
x_pos = linspace(-x_length/2, x_length/2, Nx);
y_pos = linspace(-y_length/2, y_length/2, Ny);
[X,Y] = meshgrid(x_pos, y_pos);
zR = pi*(w0^2)/lamda; % 瑞利长度
w_z = w0*sqrt(1+(z/zR)^2); % z位置的光束半径
I0 = 1; % 光强系数定义为1
Gaussian_I = I0*exp(-2.*(sqrt(X.^2+Y.^2)./w_z).^2);
end
仿真结果图:
专栏内容供作者本人或大家学习使用,多多指教 ~