Matlab:实现高斯光束产生

本文基于光学原理,用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
仿真结果图:

Matlab:实现高斯光束产生_第1张图片


专栏内容供作者本人或大家学习使用,多多指教 ~

你可能感兴趣的:(Matlab_光学,matlab,物理光学)