当前位置:   article > 正文

Matlab:实现高斯光束产生_matlab高斯光束

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;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
仿真结果图:

在这里插入图片描述


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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/288314
推荐阅读
相关标签
  

闽ICP备14008679号