Matlab:贝塞尔高斯光束自由传输matlab仿真.pdfVIP

  • 14
  • 0
  • 约3.31千字
  • 约 2页
  • 2023-06-24 发布于江苏
  • 举报

Matlab:贝塞尔高斯光束自由传输matlab仿真.pdf

Matlab :贝塞尔⾼斯光束 ⾃由传输matlab仿真 matlab代码 : clc clear all close all %% N = 200; lambda = 1064e-6; %波长1064nm row = linspace(-1,1,N) ; col = linspace(-1,1,N) ; [ ,y] = meshgrid(row,col) ; [theta,r] = cart2pol( ,y) ; w = 3 ; %⾼斯光束束腰宽度 k = 2*pi/lambda; %波数 k_ r = 20; %径向波⽮ - 常 k_z = sqrt(k^2-k_ r^2) ; %轴向波⽮ z = 0; for n = 0 : 3 %贝塞尔函数阶数n = 0,1,2,3等等 E = besselj(n,k_ r*r).*e p(-r.^2/w^2).*e p(1i*k_z*z).*e p(1i*n*theta) ; I = E.*conj(E) ; I = I/ma (ma (I)) ; %归⼀化 figure;mesh( ,y,I) set(gca,fontname,times new roman,fontsize,16) ; title([num2str(n),阶贝塞尔-⾼斯光束光强分布],fontname,华⽂中宋,fontsize,16) ; label( /mm,fontname,times new roman,fontsize,16) ; ylabel(y/mm,fontname,times new roman,fontsize,16) ; zlabel(归⼀化强度,fontname,华⽂中宋,fontsize,16) ; end %% ⾃由传输部分(菲涅尔衍射积分) n = 1; E1 = besselj(n,k_ r*r).*e p(-r.^2/w^2).*e p(1i*k_z*z).*e p(1i*n*theta) ; Z = 100; %传输距离 00 = linspace(-0.5,0.5,N) ; y00 = linspace(-0.5,0.5,N) ; [ 2,y2] = meshgrid( 00,y00) ; for a=1:N for b=1:N E2(a,b) = -1i/lambda/Z*e p(1i*k*Z)*sum(sum(E1.*e p(1i*k/2/Z .*(( 00(a)- ).^2+(y00(b)-y).^2)))) ; end a end I2 = E2.*conj(E2) ; I2 = I2/ma (ma (I2)) ; figure;mesh( 2,y2,I2) set(gca,fontname,times new roman,fontsize,16) ; title([num2str(n),阶贝塞尔-⾼斯光束 ⾃由传输后光强分布],fontname,华⽂中宋,fontsize,16) ; label( /mm,fontname,times new roman,fontsize,16) ; ylabel(y/mm,fontname,times new roman,fontsize,16) ; zlabel(归⼀化强度,fontname,华⽂中宋,fontsize,16) ; 结果如下 : 这⾥⽤的是菲涅尔衍射积分来计算传出100mm后的光场,可以改变Z的⼤⼩来计算传输更远距离传输距离的光场,不过如果传输距离过 ⼤,菲涅尔衍射积分公式将不再适⽤,请慎重使⽤。 参考⽂献 : [1]Gao Zenghui, Lü Baida. ⾮傍轴贝塞尔-⾼斯光束在 ⾃由空间的传输[J]. 光⼦学报, 2005, 34 (11):1732- 1735. [2]梁晓晶. 贝塞尔光束的传输变换特性研究[D]. clc; clear; close all; %% 参数设置 N y = 200; %采样点 lambda = 1064e

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档