高斯光束的matlab仿真教学内容

合集下载

高等光学仿真matlab第六章高功率光纤激光器版pdf

高等光学仿真matlab第六章高功率光纤激光器版pdf

高等光学仿真matlab第六章高功率光纤激光器版pdf高功率光纤激光器是一种基于激光光源的新型发光器件,具有高功率、高光束质量、高光谱均匀度等特点,广泛应用于激光加工、激光通信、激光雷达等领域。

本文将介绍如何使用Matlab进行高等光学仿真,从而对高功率光纤激光器进行优化设计。

1.光学仿真原理光学仿真是利用计算机模拟光的传播过程,通过建立光学系统的数学模型,计算光场的传输、衍射、反射等现象,从而分析和优化系统性能。

Matlab作为一种强大的科学计算软件,提供了丰富的工具和函数,可用于光学系统的建模和仿真。

2.建立光纤激光器模型在Matlab中,可以利用光波传输法建立高功率光纤激光器的数学模型,包括光波传输方程、折射率方程、损耗方程等。

通过优化这些方程中的参数,可以设计出性能优越的光纤激光器。

3.光纤激光器的光场分析利用Matlab的光场传播函数,可以对光纤激光器的光场进行分析,包括光束的聚焦度、光谱特性、空间分布等。

通过观察这些参数的变化,可以了解光纤激光器在不同工作条件下的性能表现。

4.优化设计光纤激光器在光学仿真过程中,可以通过调节光纤激光器的结构参数、工作条件等,实现对光纤激光器性能的优化设计。

例如,通过改变激光器的长度、折射率、掺杂浓度等参数,可以提高光纤激光器的输出功率、波长稳定性等。

5.应用与展望高功率光纤激光器具有广泛的应用前景,可以应用于激光打标、激光切割、激光焊接等领域。

随着光纤激光器技术的不断进步,相信其在工业制造、医疗美容、通信等领域中将有更加广泛的应用。

综上所述,利用Matlab进行高等光学仿真,可以实现对高功率光纤激光器的精确建模和优化设计,为其在实际应用中发挥更大的作用提供了有力支持。

希望本文能够对读者在光学仿真领域的研究和应用有所启发,推动光学技术的不断发展和创新。

matlab高斯光束在自由传输过程中的强度变化。

matlab高斯光束在自由传输过程中的强度变化。

matlab高斯光束在自由传输过程中的强度变化。

文章标题:深度解析:matlab高斯光束在自由传输过程中的强度变化导言:在现代光学和通信领域,高斯光束一直是一个备受关注的研究对象。

其理论模型和实际应用广泛存在于激光技术、光通信、光学成像等众多领域。

本文将深入探讨matlab中高斯光束在自由传输过程中的强度变化规律,通过理论分析和数值模拟,为读者提供全面、深入的理解和应用指导。

一、高斯光束的基本概念我们需要了解高斯光束的基本概念。

高斯光束是一种特殊的光束模式,其幅度和相位分布呈现出高斯函数的特征。

在实际应用中,我们通常通过高斯光束来描述光束的传输特性和聚焦特性。

1. 高斯光束的数学表达高斯光束的数学表达是关于位置和时间的二维高斯函数。

它通常由振幅和相位两部分构成,可以用复数表示。

在matlab中,我们可以使用一系列函数来描述和模拟高斯光束的传播和变化。

2. 高斯光束的特性高斯光束具有许多独特的特性,比如其在自由传输过程中的强度变化规律、焦距、散焦等。

这些特性对于理解光束的传输和调控至关重要。

二、matlab中高斯光束的建模与仿真接下来,我们将重点介绍matlab中对高斯光束的建模和仿真。

matlab作为一种强大的科学计算软件,拥有丰富的工具和函数库,可以有效地模拟和分析光学系统中的高斯光束的传播和强度变化。

1. 高斯光束的建模在matlab中,我们可以使用GaussBeam类或者自定义函数来建立高斯光束的模型。

通过设定光束的初始参数、波长、焦距等,我们可以快速地建立起高斯光束的数学模型。

2. 高斯光束的传输仿真通过matlab的光学传输仿真工具包,我们可以对高斯光束在自由传输过程中的强度变化进行模拟和分析。

在仿真过程中,我们可以观察到光束的膨胀、散焦、衍射等现象,从而深入理解其传播规律。

三、高斯光束在自由传输过程中的强度变化规律现在,让我们来重点分析高斯光束在自由传输过程中的强度变化规律。

通过理论分析和数值模拟,我们可以得出一些重要结论。

高斯光束及其传播特性的仿真

高斯光束及其传播特性的仿真
1 q0 z q q0 z 0 1
(4.39)
将(4.27)、式(4.37)代入式(4.39)中做复数运算,可 以得到
w w0 1 ( z Z R ) 2 ) ZR z
(4.41)
高斯光束通过复杂光学系统的变换
在折射率 n1 的物空间 s1 处入射复参数为 q1 的高斯光 束,通过以上变换矩阵的复杂光学系统后,在折射 率n2的像空间s2处变换为复参数为q2的高斯光束。 经过计算,可得高斯光束通过复杂光学系统的一般 变换公式:
2 BD ACZ01 0 2 B 2 A2 Z 01 Z 02 ( n1 / n2 ) Z 01
(4.49)
当n2=n1=1时,式(4.49)可写成
2 as0 dsi cs0 si b Z 01
c(a bsi ) d cs0
1/ 2
as dsi cs0 si b w02 w01 (a csi ) 2 0 Z 01 1 2 w01 a csi 1 Z 01 (d cs0 ) 2
X2 (n1 / n2 )Y1 A2 2 X 1 AB ( X 12 Y12 ) B 2
2 1 2 1
( X Y ) BD X1 ( AD BC) AC X2 A2 2 X 1 AB ( X12 Y12 ) B 2
(4.46)
实际工作中最感兴趣的是X1=X2=0,即研究入射与出射高 斯光束束腰间的变换问题,此时式(4.46)简化为
1 1 Im 2 w q
(4.30)
(4.31) 其中,Re表示复数取实部;Im表示复数取虚部运算。
2、高斯光束的ABCD定律 高斯光束复参数q通过变换矩阵 换遵守ABCD定律:

matlab模拟高阶拉盖尔和厄密高斯光束

matlab模拟高阶拉盖尔和厄密高斯光束

作业2-1:1.1厄米—高斯光束根据书上第二章第七节的厄米多项式的递推公式取前三阶,绘制出了基模及高阶模的厄米—高斯光束光强三维图和二维图程序:% H0-H3H0X=1;H0Y=1;H1X=2.*X1;H1Y=2.*Y1;H2X=4.*X1.^2-2;H2Y=4.*Y1.^2-2;H3X=8.*X1.^3-12.*X1;H3Y=8.*Y1.^3-12.*Y1;%% 厄米特——高斯函数% F0-F3FX0=H0X.*exp(-X1.^2-2);FY0=H0Y.*exp(-Y1.^2-2);FX1=H1X.*exp(-X1.^2-2);FY1=H1Y.*exp(-Y1.^2-2);FX2=H2X.*exp(-X1.^2-2);FY2=H2Y.*exp(-Y1.^2-2);FX3=H3X.*exp(-X1.^2-2);FY3=H3Y.*exp(-Y1.^2-2);%% 振幅分布figure(1);u00=FX0.*FY0; % TEM00subplot(2,2,1)mesh(X1,Y1,u00);subplot(2,2,2)imagesc(abs(u00))u30=FX3.*FY0; % TEM30subplot(2,2,3)mesh(X1,Y1,abs(u30)); subplot(2,2,4)imagesc(abs(u30))figure(2);u21=FX2.*FY1; % TEM21 subplot(2,2,1)mesh(X1,Y1,abs(u21)); subplot(2,2,2)imagesc(abs(u21))u31=FX3.*FY1; % TEM31 subplot(2,2,3)mesh(X1,Y1,abs(u31)); subplot(2,2,4)imagesc(abs(u31))figure(3);u33=FX3.*FY3; % TEM33 subplot(1,2,1)mesh(X1,Y1,abs(u33)); subplot(1,2,2)imagesc(abs(u33))运行结果从运行结果可以看出,厄米—高斯光束TEM00基模光强成高斯分布,随着阶数的增大,光强分布图中峰值随之增多。

光束法matlab程序 -回复

光束法matlab程序 -回复

光束法matlab程序-回复如何使用光束法编写MATLAB程序。

光束法是一种常用的数值模拟方法,用于求解光学系统中的波动问题。

它可以描述光线的传播以及防止光的干涉和衍射现象。

在MATLAB中,我们可以借助一些相关的工具箱和函数来实现光束法,这使得编写光束法程序变得更加简单和高效。

本文将以如何使用光束法编写MATLAB程序为主题,逐步回答以下问题。

第一步:导入相关工具箱和函数在使用光束法编写MATLAB程序之前,我们需要导入一些相关的工具箱和函数。

光学工具箱是MATLAB的一个重要工具箱,其中包含了许多用于光学系统建模和光束传播仿真的函数和工具。

我们可以使用MATLAB 的命令窗口或脚本文件来导入光学工具箱和其他需要的工具箱,例如图像处理工具箱、优化工具箱等。

第二步:定义光学系统参数在编写光束法程序之前,我们需要定义光学系统的参数。

这些参数包括光源的波长、光源的位置、光学元件的位置和属性等。

我们可以使用MATLAB 的变量来定义这些参数,并使用适当的单位来描述。

第三步:设置初始条件在进行光束法计算之前,我们需要设置一些初始条件。

这些初始条件包括光束的初始位置、初始方向和初始光强等。

我们可以使用MATLAB的函数或操作符来设置这些初始条件,并将其存储在合适的变量中。

第四步:编写光束传播算法光束法的核心是光束传播算法。

在MATLAB中,我们可以使用光学工具箱中的函数和工具来实现光束传播算法。

这些函数包括计算光束衍射、反射、折射以及衍射效应等。

我们可以按照光学系统的具体要求,选择合适的函数和工具来编写光束传播算法。

第五步:模拟光束传播过程在编写光束法程序之后,我们可以模拟光束在光学系统中的传播过程了。

我们可以使用MATLAB的绘图工具来可视化光束传播过程,以及显示光束的传播路径和光强分布等。

通过这些可视化工具,我们可以更直观地了解光束在光学系统中的传播特性。

第六步:分析和优化结果在模拟完光束传播过程后,我们可以对计算结果进行分析和优化。

基于matlab高斯光束经透射型体光栅后的光束传输特性分析(附源程序)

基于matlab高斯光束经透射型体光栅后的光束传输特性分析(附源程序)

目录1 基本原理 (1)1.1耦合波理论 (1)1.2高斯光波的基本理论 (9)2 建立模型描述 (10)3仿真结果及分析 (10)3.1角度选择性的模拟 (10)3.2波长选择性的模拟 (13)3.3单色发散光束经透射型布拉格体光栅的特性 (15)3.4多色平面波经透射型布拉格体光栅的特性 (17)4 调试过程及结论 (18)5 心得体会 (20)6 思考题 (20)7 参考文献 (20)8 附录 (21)高斯光束经透射型体光栅后的光束传输特性分析1 基本原理1.1耦合波理论耦合波理论分析方法基于厚全息光栅产生的布拉格衍射光。

当入射波被削弱且产生强衍射效率时,耦合波理论分析方法适用耦合波理论分析方法适用于透射光栅。

1.1.1耦合波理论研究的假设条件及模型耦合波理论研究的假设条件:(1) 单色波入射体布拉格光栅;(2) 入射波以布拉格角度或近布拉格角度入射;(3)入射波垂直偏振与入射平面;(4)在体光栅中只有两个光波:入射光波 R 和衍射光波 S;(5)仅有入射光波 R 和衍射光波 S 遵守布拉格条件,其余的衍射能级违背布拉格条件,可被忽略;(6)其余的衍射能级仅对入射光波 R 和衍射光波 S 的能量交换有微小影响;(7)将耦合波理论限定于厚布拉格光栅中;图1为用于耦合波理论分析的布拉格光栅模型。

z 轴垂直于介质平面,x 轴在介质平面内,平行于介质边界,y 轴垂直于纸面。

边界面垂直于入射面,与介质边界成Φ角。

光栅矢量K垂直于边界平面,其大小为2/=Λ,Λ为光栅周期,θ为入射角。

Kπ图1布拉格光栅模型R —入射波,S —信号波,Φ—光栅的倾斜角,0θ—再现光满足布拉格条件时的入射角(与z 轴所夹的角),K —光栅矢量的大学,d —光栅的厚度,r θ和s θ—再现光波和衍射光波与z 轴所夹的角度,Λ—光栅周期。

光波在光栅中的传播由标量波动方程描述:220E k E ∇+= (1)公式(2)中(),E xz 是y 方向的电磁波的复振幅,假设为与y 无关,其角频率为ω。

matlab光学仿真课程设计

matlab光学仿真课程设计

matlab光学仿真课程设计一、课程目标知识目标:1. 掌握MATLAB软件的基本操作和常用命令;2. 理解光学仿真原理,了解光学仿真中常用的数学模型;3. 学会运用MATLAB进行光学仿真实验,分析仿真结果。

技能目标:1. 能够运用MATLAB编写光学仿真程序,实现光学现象的模拟;2. 能够熟练运用MATLAB处理光学数据,绘制相关图表;3. 能够运用光学仿真技术解决实际问题,提高实践操作能力。

情感态度价值观目标:1. 培养学生对光学仿真的兴趣,激发学生探索光学领域的精神;2. 增强学生团队合作意识,培养学生沟通、交流和协作能力;3. 使学生认识到光学仿真在科研和工程领域的重要性,培养学生的创新意识和责任感。

课程性质:本课程为选修课程,旨在提高学生的实践操作能力和光学仿真技术水平。

学生特点:学生具备一定的物理学和数学基础,对光学现象有一定了解,但对MATLAB软件和光学仿真技术较为陌生。

教学要求:结合学生特点,注重理论与实践相结合,通过案例分析和实际操作,使学生掌握光学仿真的基本技能,并能够运用所学知识解决实际问题。

在教学过程中,关注学生的情感态度价值观培养,提高学生的综合素质。

将课程目标分解为具体的学习成果,以便于后续教学设计和评估。

二、教学内容1. MATLAB软件基础操作与常用命令学习;- 熟悉MATLAB界面及基本功能;- 掌握数据类型、矩阵运算、函数编写等基本操作;- 了解常用的绘图命令和数据可视化方法。

2. 光学仿真原理与数学模型;- 学习光学仿真基本原理,如干涉、衍射、折射等;- 掌握光学仿真中常用的数学模型,如波动方程、衍射积分等;- 分析实际光学问题,选择合适的数学模型进行仿真。

3. MATLAB在光学仿真中的应用实例;- 通过案例学习,掌握MATLAB在光学仿真中的具体应用;- 学习如何利用MATLAB解决实际问题,如光学元件设计、光学信号处理等;- 分析仿真结果,优化光学系统性能。

高斯光束传播及其MATLAB仿真

高斯光束传播及其MATLAB仿真

⾼斯光束传播及其MATLAB仿真⽬录⼀、⾼斯光束 (1)1简介: (1)2. 命名 (1)⼆、⾼斯定律的传播 (2)1.振幅分布特性 (2)2.等相位⾯特性 (2)3.⾼斯光束的瑞利长度 (3)4.⾼斯光束的远场发散⾓ (4)三、⽤MATLAB仿真⾼斯光束的优势 (4)四、提出⾼斯光束的问题 (4)五、问题的求解 (5)六、问题的MATLAB程序 (7)1、程序如下: (7)2.最终运⾏ (10)七、结束语 (17)⼋、参考⽂献 (17)九、成绩评定 (18)⼀、⾼斯光束1简介:通常情形,激光谐振腔发出的基模辐射场,其横截⾯的振幅分布遵守⾼斯函数,故称⾼斯光束。

2.命名关于光斑⼤⼩的查询,其实问的就是光斑的束腰直径或束腰半径。

束腰,是指⾼斯光绝对平⾏传输的地⽅。

半径,是指在⾼斯光的横截⾯考察,以最⼤振幅处为原点,振幅下降到原点处的0.36788倍,也就是1/e倍的地⽅,由于⾼斯光关于原点对称,所以1/e的地⽅形成⼀个圆,该圆的半径,就是光斑在此横截⾯的半径;如果取束腰处的横截⾯来考察,此时的半径,即是束腰半径。

沿着光斑前进,各处的半径的包络线是⼀个双曲⾯,该双曲⾯有渐近线。

⾼斯光束的传输特性,是在远处沿传播⽅向成特定⾓度扩散,该⾓度即是光束的远场发散⾓,也就是⼀对渐近线的夹⾓,它与波长成正⽐,与其束腰半径成反⽐,故⽽,束腰半径越⼩,光斑发散越快;束腰半径越⼤,光斑发散越慢。

我们⽤感光⽚可以看到,在近距离时,准直器发出的光在⼀定范围内近似成平⾏光,距离稍远,光斑逐渐发散,亮点变弱变⼤;可是从光纤出来的光,很快就发散;这是因为,准直器的光斑直径⼤约有400微⽶,⽽光纤的光斑直径不到10微⽶。

同时,对于准直器最⼤⼯作距离的定义,往往可理解为该准直器输出光斑的共焦参数,该参数与光斑束腰半径平⽅成正⽐,与波长成反⽐,计算式是:3.1415926*束腰半径*束腰半径/波长。

所以要做成长⼯作距离(意味着在更长的传输距离⾥⾼斯光束仍近似成平⾏光)的准直器,必然要把光斑做⼤,透镜相应要加长加粗。

matlab高斯光束角度倾斜

matlab高斯光束角度倾斜

MATLAB高斯光束角度倾斜在MATLAB中模拟高斯光束的角度倾斜通常涉及到对高斯光束的数学表达式进行修正,以包含光束的倾斜角度。

高斯光束的基本表达式为:E(x,y,z)=A exp(−2σx2x2−2σy2y2−2σz2z2)其中,A是光束的振幅,σx,σy, 和σz分别是光束在x, y, 和z方向上的标准差,这些参数通常与光束的腰斑半径和发散角有关。

当光束以一定的角度倾斜时,你需要对光束的表达式进行旋转。

这通常通过应用旋转矩阵来实现,旋转矩阵将原始的高斯光束坐标(x, y, z)转换为倾斜后的坐标(x', y', z')。

假设光束在xy平面内以角度θ倾斜,那么旋转矩阵可以表示为:[x′y′]=[cosθsinθ−sinθcosθ][xy]在MATLAB中,你可以通过以下步骤来模拟高斯光束的角度倾斜:1.定义高斯光束的参数(腰斑半径、发散角、波长等)。

2.创建一个网格来代表光束的横截面。

3.计算每个网格点上的高斯光束强度。

4.应用旋转矩阵来倾斜光束。

5.绘制倾斜后的高斯光束强度分布。

以下是一个简单的MATLAB脚本示例,展示了如何模拟高斯光束在xy平面内以一定角度倾斜:matlab% 定义高斯光束参数waist_radius = 0.01; % 腰斑半径wavelength = 1; % 波长z_position = 5 * waist_radius; % 观察位置theta = 15 * pi / 180; % 倾斜角度(弧度)% 创建网格[x, y] = meshgrid(linspace(-0.1, 0.1, 100));% 计算高斯光束强度(未倾斜)sigma_x = waist_radius * sqrt(1 + (z_position / (pi * waist_radius))^2);sigma_y = sigma_x; % 假设光束在y方向上也是对称的A = 1; % 振幅E = A * exp(-(x.^2 / (2 * sigma_x^2)) - (y.^2 / (2 * sigma_y^2)));% 应用旋转矩阵倾斜光束R = [cos(theta) -sin(theta); sin(theta) cos(theta)];[x_rotated, y_rotated] = R * [x(:) y(:)];x_rotated = reshape(x_rotated, size(x));y_rotated = reshape(y_rotated, size(y));% 计算倾斜后的高斯光束强度E_tilted = A * exp(-(x_rotated.^2 / (2 * sigma_x^2)) - (y_rotated.^2 / (2 * sigma_y^2)));% 绘制结果figure;subplot(1, 2, 1);imagesc(x, y, E);axis square;title('未倾斜的高斯光束');colorbar;subplot(1, 2, 2);imagesc(x, y, E_tilted);axis square;title('倾斜后的高斯光束');colorbar;这个脚本首先定义了一个高斯光束的参数,然后创建了一个网格来计算光束的强度。

MATLAB高斯光束传播轨迹的模拟

MATLAB高斯光束传播轨迹的模拟

B1:xx 光束传播轨迹的模拟设计任务:作图表示xx 光束的传播轨迹( 1)基模高斯光束在自由空间的传播轨迹;( 2)基模高斯光束经单透镜变换前后的传播轨迹;( 3)基模高斯光束经调焦望远镜变换前后的传播轨迹。

function vargout = B1(vargin)% B1 M-file forB1.fig%B1, by itself, creates a new B1 or raises the existing%singleton*.%%H = B1 returns the handle to a new B1 or the handle to%the existing singleton*.%%B1('CALLBACK',hObject,eventData,handles,...) calls the local%function named CALLBACK inB1.M with the given input arguments.%%B1('Property','Value',...) creates a new B1 or raises the%existing singleton*.Starting from the left, property value pairs are%applied to the GUI before B1_OpeningFunction gets called.An%unrecognized property name or invalid value makes property applicationGUIDE, GUIDATA, GUIHANDLES% Copyright 2002-2003 The MathWorks, Inc.% Edit the above text to modify the response to help B1% Last Modified by GUIDE v2.5 21-Oct-2010 17:52:32% Begin initialization code - DO NOT EDIT gui_Singleton = 1;gui_State = struct('gui_Name',mfilename, ... 'gui_Singleton',gui_Singleton, ...'gui_Callback',[]);if nargin && ischar(vargin{1})gui_State.gui_Callback = str2func(vargin{1}); endif nargout});else});end% End initialization code - DO NOT EDIT% --- Executes just before B1 is made visible.% hObjecthandle to figure% eventdatareserved - to be defined in a future version of MATLAB % handlesstructure with handles and user data (see GUIDATA)handles.output = hObject;% Update handles structure guidata(hObject, handles);% UIWAIT makes B1 wait for user response (see UIRESUME)% uiwait(handles.figure1);% vargoutcell array for returning output args (see VARGOUT);% hObjecthandle to figure% eventdatareserved - to be defined in a future version of MATLAB% handlesstructure with handles and user data (see GUIDATA) vargout{1} = handles.output;% --- Executes on button press in pushbutton1.function pushbutton1_Callback(hObject, eventdata, handles)% hObjecthandle to pushbutton1 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB % handlesstructure with handles and user data (see GUIDATA)handles.W0=str2double(get(handles.editW0,'string'));handles.B=str2double(get(handles.editB,'string')); guidata(hObject,handles);Z=-100:100;W=(ha ndles.W0*10八4)*(sqrt(1+ha ndles.B^2*(Z*10八6)八2./(p22*(ha ndles.W0*10八4)八4)));plot(Z,W,'b',Z,-W,'b');% --- Executes on button press in pushbutton2.function pushbutton2_Callback(hObject, eventdata, handles)% hObjecthandle to pushbutton2 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB % handlesstructure with handles and user data (see GUIDATA)handles.W0=str2double(get(handles.editW0,'string'));handles.B=str2double(get(handles.editB,'string'))/1000;handles.Z=str2double(get(handles.editZ,'string'))*1000;handles.f=str2double(get(handles.editf,'string'))*10;L=(ha ndles.Z-ha ndles.f)*ha ndles"2/((ha ndles.Z-han dles.f)A2+pi A2*ha ndles.WOM/ha ndles.B^2)+ha ndles.f;T1=-handles.Z:1:handles.Z;Y1=handles.W0*sqrt(1+T1.A2*handles.BA2/(piA2*handles.W0A4)); T2=handles.Z:1:(handles.Z+2*L);W1=(handles.W0*handles.f/sqrt((handles.f-han dles.Z)A2+pi A2*ha ndles.WOM/ha ndles.BT)); Y2二W1*sqrt(1+(T2-ha ndles.Z-L).A2/(pi A2*W1A4/ha ndles.BA2));plot(T1,Y1,'b',T1,-Y1,'b',T2,Y2,'r',T2,-Y2,'r');% --- Executes on button press in pushbutton3.function pushbutton3_Callback(hObject, eventdata, handles)% hObjecthandle to pushbutton3 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB % handlesstructure with handles and user data (see GUIDATA)handles.W0=str2double(get(handles.editW0,'string'));handles.B=str2double(get(handles.editB,'string'))/1000;handles.f1=str2double(get(handles.editf1,'string'))*10;handles.Z=str2double(get(handles.editZ,'string'))*1000;handles.f2=str2double(get(handles.editf2,'string'))*10;L=(handles.Z-handles.f1)*handles.f1A2/((handles.Z-handles.f1)A2+piA2*handles.W0A4/handles.BA2)+handles.f1;T1=-handles.Z:1:handles.Z;Y1=handles.W0*sqrt(1+T1.A2*handles.BA2/(piA2*handles.W0A4));T2=handles.Z:1:(handles.Z+L+handles.f2);W1=(handles.W0*handles.f1./sqrt((handles.f1-handles.Z)A2+piA2*handles.W0A4./ha ndles.BT)); Y2二W1*sqrt(1+(T2-ha ndles.Z-L)八2./(pi A2*W1A4/ha ndles.BT));W2=W1*sqrt(1+ha ndles.f2A2/(piA2*W1A4/ha ndles.BA2));T3=(handles.Z+L+handles.f2):1:3*(handles.Z+L+handles.f2);Y3=W2;plot(T1,Y1,'b',T1,-Y1,'b',T2,Y2,'r',T2,-Y2,'r',T3,Y3,'g',T3,-Y3,'g');grid on;function editW0_Callback(hObject, eventdata, handles)% hObjecthandle to editW0 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% handlesstructure with handles and user data (see GUIDATA)% Hints:get(hObject,'String') returns contents of editW0 as text%str2double(get(hObject,'String')) returns contents of editW0 as a double % --- Executes during object creation, after setting all properties.% hObjecthandle to editW0 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% Hint:edit controls usually have a white background on Windows.%See ISPC and COMPUTER.if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); endfunction editB_Callback(hObject, eventdata, handles)% hObjecthandle to editB (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% handlesstructure with handles and user data (see GUIDATA)% Hints:get(hObject,'String') returns contents of editB as text%str2double(get(hObject,'String')) returns contents of editB as a double % --- Executes during object creation, after setting all properties.% hObjecthandle to editB (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% Hint:edit controls usually have a white background on Windows.%See ISPC and COMPUTER.if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));endfunction editZ_Callback(hObject, eventdata, handles)% hObjecthandle to editZ (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% handlesstructure with handles and user data (see GUIDATA)% Hints:get(hObject,'String') returns contents of editZ as text%str2double(get(hObject,'String')) returns contents of editZ as a double % --- Executes during object creation, after setting all properties.% hObjecthandle to editZ (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% Hint:edit controls usually have a white background on Windows.%See ISPC and COMPUTER.if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function editf_Callback(hObject, eventdata, handles)% hObjecthandle to editf (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% handlesstructure with handles and user data (see GUIDATA)% Hints:get(hObject,'String') returns contents of editf as text%str2double(get(hObject,'String')) returns contents of editf as a double % --- Executes during object creation, after setting all properties.% hObjecthandle to editf (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% Hint:edit controls usually have a white background on Windows.%See ISPC and COMPUTER.if ispc set(hObject,'BackgroundColor','white');else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function editf1_Callback(hObject, eventdata, handles)% hObjecthandle to editf1 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% handlesstructure with handles and user data (see GUIDATA)% Hints:get(hObject,'String') returns contents of editf1 as text %str2double(get(hObject,'String')) returns contents of editf1 as a double % --- Executes during object creation, after setting all properties.% hObjecthandle to editf1 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% Hint:edit controls usually have a white background on Windows.%See ISPC and COMPUTER.if ispc set(hObject,'BackgroundColor','white'); elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function editf2_Callback(hObject, eventdata, handles)% hObjecthandle to editf2 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% handlesstructure with handles and user data (see GUIDATA)% Hints:get(hObject,'String') returns contents of editf2 astext %str2double(get(hObject,'String')) returns contents of editf2 as a double % --- Executes during object creation, after setting all properties.% hObjecthandle to editf2 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% Hint:edit controls usually have a white background on Windows.%See ISPC and COMPUTER.if ispc set(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end% --- Executes on mouse press over axes background.% hObjecthandle to axes1 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% handlesstructure with handles and user data (see GUIDATA)% --- Executes on button press in pushbutton4.function pushbutton4_Callback(hObject, eventdata, handles)close(gcf)% hObjecthandle to pushbutton4 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% handlesstructure with handles and user data (see GUIDATA)% --- Executes on key press over pushbutton4 with no controls selected. % hObjecthandle to pushbutton4 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% handlesstructure with handles and user data (see GUIDATA)11 /。

《2024年基于Matlab的光学实验仿真》范文

《2024年基于Matlab的光学实验仿真》范文

《基于Matlab的光学实验仿真》篇一一、引言光学实验在科学研究和教学领域占据重要地位,它们通过直观的实验方式展示光的性质和行为,同时帮助研究人员深化对光学原理的理解。

然而,由于实验条件、设备及环境因素的限制,一些实验可能难以进行或结果不理想。

因此,基于Matlab的光学实验仿真应运而生,它能够模拟真实的光学实验环境,提供更为准确和可靠的结果。

本文将详细介绍基于Matlab的光学实验仿真过程及其应用。

二、Matlab仿真环境介绍Matlab是一款强大的数学计算软件,它提供了丰富的函数库和工具箱,可以方便地进行光学仿真实验。

在光学仿真中,Matlab的图像处理工具箱和光学工具箱发挥了重要作用。

通过这些工具箱,我们可以模拟光线的传播、干涉、衍射等现象,从而实现对光学实验的仿真。

三、光学实验仿真过程1. 确定仿真目标:首先,需要明确仿真的目标,即要模拟哪种光学实验或现象。

这需要结合实际需求和实验条件进行确定。

2. 建立仿真模型:根据仿真目标,建立相应的光学仿真模型。

这包括光源模型、光路模型、探测器模型等。

在Matlab中,可以通过编写代码或利用工具箱中的函数来建立这些模型。

3. 设置仿真参数:根据实际需要,设置仿真参数,如光源的波长、光路的长度和角度、探测器的灵敏度等。

这些参数将直接影响仿真的结果。

4. 运行仿真:在设置好参数后,运行仿真程序。

Matlab将根据建立的模型和参数进行计算,并输出仿真结果。

5. 分析结果:对仿真结果进行分析,验证其是否符合预期。

如果存在差异,需要调整模型或参数,重新进行仿真。

四、光学实验仿真的应用1. 教学应用:基于Matlab的光学实验仿真可以用于教学领域。

通过仿真实验,学生可以直观地了解光的传播和相互作用过程,加深对光学原理的理解。

同时,仿真实验还可以弥补实际实验条件的不足,提高教学效果。

2. 科学研究:在科学研究领域,基于Matlab的光学实验仿真可以用于模拟复杂的光学现象和实验。

MATLAB 高斯光束传播轨迹的模拟

MATLAB 高斯光束传播轨迹的模拟

B1:xx光束传播轨迹的模拟设计任务:作图表示xx光束的传播轨迹(1)基模高斯光束在自由空间的传播轨迹;(2)基模高斯光束经单透镜变换前后的传播轨迹;(3)基模高斯光束经调焦望远镜变换前后的传播轨迹。

function vargout = B1(vargin)% B1 M-file forB1.fig%B1, by itself, creates a new B1 or raises the existing%singleton*.%%H = B1 returns the handle to a new B1 or the handle to%the existing singleton*.%%B1('CALLBACK',hObject,eventData,handles,...) calls the local%function named CALLBACK inB1.M with the given input arguments.%%B1('Property','Value',...) creates a new B1 or raises the%existing singleton*.Starting from the left, property value pairs are%applied to the GUI before B1_OpeningFunction gets called.An%unrecognized property name or invalid value makes property applicationGUIDE, GUIDATA, GUIHANDLES% Copyright 2002-2003 The MathWorks, Inc.% Edit the above text to modify the response to help B1% Last Modified by GUIDE v2.5 21-Oct-2010 17:52:32% Begin initialization code - DO NOT EDIT gui_Singleton = 1;gui_State = struct('gui_Name',mfilename, ... 'gui_Singleton',gui_Singleton, ...'gui_Callback',[]);if nargin && ischar(vargin{1})gui_State.gui_Callback = str2func(vargin{1}); endif nargout});else});end% End initialization code - DO NOT EDIT% --- Executes just before B1 is made visible. % hObjecthandle to figure% eventdatareserved - to be defined in a future version of MATLAB % handlesstructure with handles and user data (see GUIDATA)handles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes B1 wait for user response (see UIRESUME)% uiwait(handles.figure1);% vargoutcell array for returning output args (see VARGOUT);% hObjecthandle to figure% eventdatareserved - to be defined in a future version of MATLAB % handlesstructure with handles and user data (see GUIDATA) vargout{1} = handles.output;% --- Executes on button press in pushbutton1.function pushbutton1_Callback(hObject, eventdata, handles)% hObjecthandle to pushbutton1 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB % handlesstructure with handles and user data (see GUIDATA) handles.W0=str2double(get(handles.editW0,'string'));handles.B=str2double(get(handles.editB,'string'));guidata(hObject,handles);Z=-100:100;W=(handles.W0*10^4)*(sqrt(1+handles.B^2*(Z*10^6).^2./(pi^2*(handles.W0*10^4)^4)));plot(Z,W,'b',Z,-W,'b');% --- Executes on button press in pushbutton2.function pushbutton2_Callback(hObject, eventdata, handles)% hObjecthandle to pushbutton2 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB % handlesstructure with handles and user data (see GUIDATA)handles.W0=str2double(get(handles.editW0,'string'));handles.B=str2double(get(handles.editB,'string'))/1000;handles.Z=str2double(get(handles.editZ,'string'))*1000;handles.f=str2double(get(handles.editf,'string'))*10;L=(handles.Z-handles.f)*handles.f^2/((handles.Z-handles.f)^2+pi^2*handles.W0^4/handles.B^2)+handles.f;T1=-handles.Z:1:handles.Z;Y1=handles.W0*sqrt(1+T1.^2*handles.B^2/(pi^2*handles.W0^4));T2=handles.Z:1:(handles.Z+2*L);W1=(handles.W0*handles.f/sqrt((handles.f-handles.Z)^2+pi^2*handles.W0^4/handles.B^2));Y2=W1*sqrt(1+(T2-handles.Z-L).^2/(pi^2*W1^4/handles.B^2));plot(T1,Y1,'b',T1,-Y1,'b',T2,Y2,'r',T2,-Y2,'r');% --- Executes on button press in pushbutton3.function pushbutton3_Callback(hObject, eventdata, handles)% hObjecthandle to pushbutton3 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% handlesstructure with handles and user data (see GUIDATA)handles.W0=str2double(get(handles.editW0,'string'));handles.B=str2double(get(handles.editB,'string'))/1000;handles.f1=str2double(get(handles.editf1,'string'))*10;handles.Z=str2double(get(handles.editZ,'string'))*1000;handles.f2=str2double(get(handles.editf2,'string'))*10;L=(handles.Z-handles.f1)*handles.f1^2/((handles.Z-handles.f1)^2+pi^2*handles.W0^4/handles.B^2)+handles.f1;T1=-handles.Z:1:handles.Z;Y1=handles.W0*sqrt(1+T1.^2*handles.B^2/(pi^2*handles.W0^4));T2=handles.Z:1:(handles.Z+L+handles.f2);W1=(handles.W0*handles.f1./sqrt((handles.f1-handles.Z)^2+pi^2*handles.W0^4./handles.B^2));Y2=W1*sqrt(1+(T2-handles.Z-L).^2./(pi^2*W1^4/handles.B^2));W2=W1*sqrt(1+handles.f2^2/(pi^2*W1^4/handles.B^2));T3=(handles.Z+L+handles.f2):1:3*(handles.Z+L+handles.f2);Y3=W2;plot(T1,Y1,'b',T1,-Y1,'b',T2,Y2,'r',T2,-Y2,'r',T3,Y3,'g',T3,-Y3,'g');grid on;function editW0_Callback(hObject, eventdata, handles)% hObjecthandle to editW0 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% handlesstructure with handles and user data (see GUIDATA)% Hints:get(hObject,'String') returns contents of editW0 as text%str2double(get(hObject,'String')) returns contents of editW0 as a double % --- Executes during object creation, after setting all properties.% hObjecthandle to editW0 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% Hint:edit controls usually have a white background on Windows.%See ISPC and COMPUTER.if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); endfunction editB_Callback(hObject, eventdata, handles)% hObjecthandle to editB (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% handlesstructure with handles and user data (see GUIDATA)% Hints:get(hObject,'String') returns contents of editB as text%str2double(get(hObject,'String')) returns contents of editB as a double % --- Executes during object creation, after setting all properties.% hObjecthandle to editB (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% Hint:edit controls usually have a white background on Windows.%See ISPC and COMPUTER.if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));endfunction editZ_Callback(hObject, eventdata, handles)% hObjecthandle to editZ (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% handlesstructure with handles and user data (see GUIDATA)% Hints:get(hObject,'String') returns contents of editZ as text%str2double(get(hObject,'String')) returns contents of editZ as a double % --- Executes during object creation, after setting all properties.% hObjecthandle to editZ (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% Hint:edit controls usually have a white background on Windows.%See ISPC and COMPUTER.if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); endfunction editf_Callback(hObject, eventdata, handles)% hObjecthandle to editf (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% handlesstructure with handles and user data (see GUIDATA)% Hints:get(hObject,'String') returns contents of editf as text%str2double(get(hObject,'String')) returns contents of editf as a double % --- Executes during object creation, after setting all properties.% hObjecthandle to editf (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% Hint:edit controls usually have a white background on Windows.%See ISPC and COMPUTER.if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); endfunction editf1_Callback(hObject, eventdata, handles)% hObjecthandle to editf1 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% handlesstructure with handles and user data (see GUIDATA)% Hints:get(hObject,'String') returns contents of editf1 as text%str2double(get(hObject,'String')) returns contents of editf1 as a double % --- Executes during object creation, after setting all properties.% hObjecthandle to editf1 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% Hint:edit controls usually have a white background on Windows.%See ISPC and COMPUTER.if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); endfunction editf2_Callback(hObject, eventdata, handles)% hObjecthandle to editf2 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% handlesstructure with handles and user data (see GUIDATA)% Hints:get(hObject,'String') returns contents of editf2 as text%str2double(get(hObject,'String')) returns contents of editf2 as a double % --- Executes during object creation, after setting all properties.% hObjecthandle to editf2 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% Hint:edit controls usually have a white background on Windows.%See ISPC and COMPUTER.if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end% --- Executes on mouse press over axes background.% hObjecthandle to axes1 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% handlesstructure with handles and user data (see GUIDATA)% --- Executes on button press in pushbutton4.function pushbutton4_Callback(hObject, eventdata, handles)close(gcf)% hObjecthandle to pushbutton4 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% handlesstructure with handles and user data (see GUIDATA)% --- Executes on key press over pushbutton4 with no controls selected. % hObjecthandle to pushbutton4 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% handlesstructure with handles and user data (see GUIDATA)。

拉盖尔高斯光束 厄米高斯光束MATLAB仿真

拉盖尔高斯光束 厄米高斯光束MATLAB仿真

激光原理by贾而穑 130212114厄米高斯光束MATLAB仿真其中主程序文件:plotHermiteGaussianBeams.m子程序文件:HermitePoly.m程序如下:plotHermiteGaussianBeams.m%-------------------------------------------------------------------------% % auther:Erse Jia% Student ID 130212114%-------------------------------------------------------------------------% %% Hermite Gaussian Beams%% SET PARAMETERS% Physical parameterslambda = 500; % nmk = 2*pi/lambda;% The two parameters for the gaussian beam (and derived quantities)z0 = 1;A0 = 1;W0 = sqrt(lambda*z0/pi);W = @(z) W0*sqrt(1+(z/z0)^2);R = @(z) z*(1+(z/z0)^2);Zeta = @(z) atan(z/z0);% The coefficients for the Hermite-Gaussian (HG) beam of order (l,m)A = [ 1 0 0 0;1 1 0 0;0 0 0 0;0 0 .2 0];% Display Parametersres = 800;z = 1e-9;x = linspace(-2*W(z),2*W(z),res);y = linspace(-2*W(z),2*W(z),res);[X Y] = meshgrid(x,y);X = X(:);Y = Y(:);%% RUN THE SIMULATION% Preallocate MemoryU = zeros(length(X),1);Utemp = zeros(length(X),1);Utemp2 = zeros(length(X),1);% Calculate Values that are independent of HG Polynomial orderlpf = exp(-1i*k*z - 1i*k*(X.^2 + Y.^2)/(2*R(z))); %lateral phase factoru = sqrt(2)*X/W(z);v = sqrt(2)*Y/W(z);for l = 1:size(A,1)%if there are any terms of this order, calculate the x-HG (so you don't %need to repeat for each value of mif sum(A(l,:) ~= 0) ~= 0Utemp2 = (W0/W(z))*polyval(HermitePoly(l-1),u).*exp(-u.^2/2);elsecontinue;endfor m = 1:size(A,2)if A(l,m) ~= 0Utemp = Utemp2.*(polyval(HermitePoly(m-1),v)).*exp(-v.^2/2);Utemp = A(l,m)*Utemp.*lpf*exp(1i*(l+m+1)*Zeta(z));U = U + Utemp;endendend%% DRAW PLOTSfigure;U = reshape(U,res,res);imagesc(x,y,abs(U).^2);axis square;set(1,'color','w');title('Hermite-Gaussian Beam of Order');xlabel('x (nm)');ylabel('y (nm)');HermitePoly.m%-------------------------------------------------------------------------% % HermitePoly.m by Erse Jia% Student ID 130212114% Given nonnegative integer n, compute the% Hermite polynomial H_n. Return the result as a vector whose mth% element is the coefficient of x^(n+1-m).% polyval(HermitePoly(n),x) evaluates H_n(x).%-------------------------------------------------------------------------%function hk = HermitePoly(n)if n==0hk = 1;elseif n==1hk = [2 0];elsehkm2 = zeros(1,n+1);hkm2(n+1) = 1;hkm1 = zeros(1,n+1);hkm1(n) = 2;for k=2:nhk = zeros(1,n+1);for e=n-k+1:2:nhk(e) = 2*(hkm1(e+1) - (k-1)*hkm2(e));endhk(n+1) = -2*(k-1)*hkm2(n+1);if k<nhkm2 = hkm1;hkm1 = hk;endendend结果:拉盖尔高斯光束MATLAB仿真主程序文件:DrawtheLaguerreGaussbeam.m子程序文件:LG.mDrawtheLaguerreGaussbeam.m%-------------------------------------------------------------------------% % auther:Erse Jia% Student ID 130212114%-------------------------------------------------------------------------% clear all;close all; clcparams = [0 0 1];% Use function handleu0 = @(rho, phi)LG(params, rho, phi);R = @(x, y)(x<0)-(x>=0);u = @(rho, phi)R(rho.*cos(phi), rho.*sin(phi)).*u0(rho, phi);[X, Y] = meshgrid(linspace(-5, 5, 200));Rho = sqrt(X.^2 + Y.^2);Phi = atan(Y./X);figure(1)set(1,'color','w');Z = u(Rho, Phi);surf(X, Y, -Z)shading interpset(gca,'box','on');grid off;xlabel('x position');ylabel('y position');zlabel('z');colorbar;LG.mfunction y = LG( params, rho, phi )m = abs(params(1));p = params(2);w = params(3);if w==0msgbox('params(0) can not be equal to 0');endt = rho./w;y = sqrt(2*factorial(p)/pi/factorial(m+p))/w.* (sqrt(2).*t).^m ....* L([p m], 2*t.^2).* exp(-t.^2 + 1i*m*phi);function y = L(params, x)fact = @(x)arrayfun(@factorial, x);n = params(1); % pk = params(2); % mm = 0:n;a = factorial(n+k)*ones(1,length(m));b = fact(n-m);c = fact(k+m);d = fact(m);e = (-1).^m;y = zeros(size(x));for s = 1:n+1y = y + a(s) ./ b(s) ./ c(s) ./ d(s) .* e(s) .* x.^m(s); endendend结果:。

基于MATLAB的谐振腔稳定性分析和-----高斯光束传输特性计算

基于MATLAB的谐振腔稳定性分析和-----高斯光束传输特性计算

中北大学课程设计说明书2014/2015 学年第一学期学院:信息与通信工程学院专业:光电信息工程学生姓名:赵策学号:1105104138 课程设计题目:基于MATLAB的谐振腔稳定性分析和高斯光束传输特性计算起迄日期:2015年1月12日~2015年1月30日指导教师:王小燕中北大学课程设计任务书2014/2015 学年第一学期学院:信息与通信工程学院专业:光电信息工程学生姓名:赵策学号:1105104138课程设计题目:基于MATLAB的谐振腔稳定性分析和高斯光束传输特性计算起迄日期:2015年1月12日~2015年1月30日指导教师:王小燕课程设计任务书摘要此次课程设计主要针对激光原理、激光技术课程中出现的诸多理论模型进行数值求解,通过MATLAB软件进行仿真验证,从而锻炼运用数值分析方法解决专业问题的能力,进一步学习高斯光束的特性和传播规律。

关键词:激光原理高斯光束MATLAB仿真设计AbstractThis course design principle of laser, the laser technology course many theoretical models appeared in numerical simulation by MATLAB software and ability to exercise using numerical methods to solve professional problems, further study characteristics and propagation of Gaussian beams.Key words: Principle of laser Gaussian beam The MATLAB simulation目录一、总体设计方案: (9)二、共轴球面腔稳定性分析: (9)三、任务一具体设计: (10)四、任务二具体设计: (12)五、任务三具体设计: (14)六、心得体会: (15)一、总体设计方案:此次课程设计主要为了完成谐振腔稳定性的分析、高斯光束的传播规律,理解谐振腔稳定振荡的条件,利用稳定震荡的条件区别稳定腔、临界腔、非稳腔,以及利用Q参数来描述高斯光束的基本特征和传输规律。

基于MATLABGUI的激光原理仿真

基于MATLABGUI的激光原理仿真

基于MATLABGUI的激光原理仿真作者:殷建玲,敖志伟,沈学举,毛少娟,李莉,陈玉丹来源:《教育教学论坛》 2017年第36期殷建玲,敖志伟,沈学举,毛少娟,李莉,陈玉丹(军械工程学院电子与光学工程系光学工程教研室,石家庄050003)摘要:利用MATLAB GUI编程语言对激光原理部分理论进行了仿真模拟,制作了包括高斯光束、高斯光束变换、自再现模的形成、调Q激光器的脉冲输出等激光原理仿真平台,并将其运用到实际的理论教学中,使抽象的物理过程直观形象,从而对《激光原理与技术》课程的教学起到很好的辅助作用。

关键词:MATLAB GUI;激光原理;仿真中图分类号:G642.3 文献标志码:A 文章编号:1674-9324(2017)36-0275-02引言《激光原理与技术》课程是我院直通车军用光电工程专业的一门专业基础课。

该课程目前尚无相关教学辅助软件。

为此,笔者以MATLAB_GUI为基础,初步构建了能随意调节参数的激光原理实验仿真平台。

一、平台简介激光原理实验仿真平台主要包括四个模块:高斯光束、高斯光束变换、自再现模的形成和调Q激光器的脉冲输出特性,总体框架如图1所示。

二、各模块的仿真实现1.高斯光束。

激光的特殊产生方法导致出现了一种新型光波———高斯光束,其特性和传播规律与普通球面光波完全不同。

但即使最简单的基横模TEM00光束,其光强分布也是高斯函数分布,且等相位面曲率半径和中心不断变化;高阶模激光束就更复杂了。

模拟仿真的关键是光强的表达式,以及厄米函数和拉盖尔函数与高斯函数的乘积,其部分核心程序如下:(1)function pushbuttonjimo_Callback (hObject,eventdata,handles)%产生基模高斯光束图像(2)Ie=hermite(m,sqrt(2)*xx).^2.*hermite(n,sqrt(2)*yy).^2.*exp(-2*(xx.^2+yy.^2));%厄米函数(3)Ie=(sqrt(2)*rho).^(2*l).*dlaguerre(p,l,2*rho.^2).^2.*exp(-2*rho.^2).*cos(l*theta).^2;%拉盖尔函数利用plot函数语句汇出了强度分布曲线,拉盖尔高斯光束的仿真结果如图1所示。

光纤内脉冲信号传输仿真(包含matlab程序)

光纤内脉冲信号传输仿真(包含matlab程序)

光纤内脉冲信号传输仿真一、仿真内容1、 选择一种脉冲波形(高斯脉冲,啁啾高斯脉冲,双曲正割脉冲,超高斯脉冲等),讨论光脉冲在光纤内传输时,GVD 和SPM 效应是如何结合的,并使用MATLAB 仿真脉冲波形随传播距离的变化。

2、 选择一种调制方式(ASK ,PSK ,QPSK ,QAM 等),对脉冲进行调制,分析接收端的误码率。

二、原理分析1、 GVD光脉冲在单模光纤内传输的NLS 方程,对脉冲大于5ps 的脉冲有2222|A |22A A i i A A z Tβαγ∂∂=-+-∂∂ (1式) U (z,T )满足线性偏微分方程~2222U Ui z Tβ∂∂=∂∂ (2式) 若U(z,w)是U(z,T)的傅里叶变换,即~1(z,T)(z,)2i T U U e d ωωωπ-∞=-∞⎰ (3式) 满足常微分方程~~222U i U z βω∂=-∂ (4式) 其解为~~22(z,)(0,)exp(z)2iU U ωωβω= (5式)由第5式可得,GVD 改变了脉冲的每个频谱分量的相位,且其改变量依赖于频率及传输距离。

GVD 不会影响脉冲的频谱,但是能改变脉冲的形状。

把5式代入3式可得方程2的通解~221(z,T)(0,)exp(z i T)22i U U d ωβωωωπ∞=--∞⎰ (6式) 其中,~(0,)U ω是入射光在z=0处的傅里叶变换~(0,)U(0,T)exp(i T)U dT ωω∞=-∞⎰(7式) 方程6和方程7适用于任意形状的输入脉冲。

2、 SPM定义归一化振幅U/2(z,)(z,)A U αττ-= (8式)其中归一化时间量00/g t z T T T ντ-== (9式)(z,)U τ满足方程2222sgn()|U |U 2z D NLU U e i z L L αβτ-∂∂=-∂∂ (10式) 令2β=0,两边同时乘以i 可得2|U |U zNLU e z L α-∂=∂ (11式) 其中10()NL L P γ-=用NL exp(i )U V φ=做代换,并且令方程两边实部虚部相等,则有0Vz ∂=∂ 2z NL NLe V z L αφ-∂=∂ (12式) 对相位方程进行积分,得到通解NL (L,T)U(0,T)exp(i (L,T))U φ= (13式)其中,U(0,T)是z=0处的场振幅,且2NL eff NL (L,T)|U(0,T)|(L /L )φ= (14式)式中有限长度eff L [1exp(L)]/αα=-- (15式)第14式表明,SPM 产生随光强变化的相位,但脉冲形状保持不变。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

高斯光束的m a t l a b仿真题目:根据高斯光束数学模型,模拟仿真高斯光束在谐振腔中某一位置处的归一化强度分布并给出其二维、三维强度分布仿真图;用Matlab读取实际激光光斑照片中所记录的强度数据(读取照片中光斑的一个直径所记录的强度数据即可,Matlab读取照片数据命令为imread),用该数据画出图片中激光光斑的强度二维分布图,与之前数学模型仿真图对比。

(如同时考虑高斯光束光斑有效截面半径和等相位面特点,仿真高斯光束光强、光斑有效截面半径以及等相位面同时随传播距离z的变化并给出整体仿真图可酌情加分。

)原始光斑如图1所示,用imread命令读入matlab后直接用imshow命令读取即可,CCD采集的高斯光束光强分布图1 CCD采集的高斯光束强度分布读入的数据是一个224 X 244的矩阵,矩阵中的数值代表光强分布。

用读入的数据取中间一行(122行)画出强度分布如图2所示。

50100150200020406080100120140160180实验测量高斯曲线图2 实验测量高斯曲线用理论上的高斯曲线公式画出理论高斯曲线如图3所示。

-40-30-20-1001020304000.20.40.60.81理论高斯曲线图3 理论高斯曲线M 文件如下:A=imread('D:\documents\作业\激光原理与应用\高斯.bmp');A1=A(:,122);x1=1:1:224;x2=-100:1:100;a2=exp(-x2.^2/10);figureimshow(A);axis offtitle('\fontsize{12}CCD 采集的高斯光束光强分布');figureplot(x2,a2,'linewidth',1,'color','b');axis([-40 40 0 1.2])title('\fontsize{12}实验测量高斯曲线')figureplot(x1,A1,'linewidth',1,'color','r')title('\fontsize{12}理论高斯曲线')axis([50 200 0 180])画三维强度分布。

取图片矩阵的中间层,用mesh 命令画出三维图如图4所示。

图4 三维强度分布由于读入的图片有一行白边,需要手动去除掉,否则三维图会有一边整体竖起来,影响观察。

最终的M文件如下。

A=imread('D:\documents\作业\激光原理与应用\高斯.bmp');[high, width, color] = size(A);x=1:width;y=1:high-1;mesh(x', y', double(A(2:224,:,1)));grid onxlabel('x'),ylabel('y'),zlabel('z');title('三维强度分布');再用matlab仿真理论上传播过程中高斯光束的变化这次先给出M文件:%Gaussian_propagation.m%Simulation of diffraction of Gaussian Beamclear;%Gaussian Beam%N:sampling numberN=input('Number of samples(enter from 100 to 500)=');L=10*10^-3;Ld=input('wavelength of light in [micrometers]=');Ld=Ld*10^-6;ko=(2*pi)/Ld;wo=input('Waist of Gaussian Beam in [mm]=');wo=wo*10^-3;z_ray=(ko*wo^2)/2*10^3;sprintf('Rayleigh range is %f [mm]',z_ray)z_ray=z_ray*10^-3;z=input('Propagation length (z) in [mm]');z=z*10^-3;%dx:step sizedx=L/N;for n=1:N+1for m=1:N+1%Space axisx(m)=(m-1)*dx-L/2;y(n)=(n-1)*dx-L/2;%Gaussian Beam in space domainGau(n,m)=exp(-(x(m)^2+y(n)^2)/(wo^2));%Frequency axis Kx(m)=(2*pi*(m-1))/(N*dx)-((2*pi*(N))/(N*dx))/2;Ky(n)=(2*pi*(n-1))/(N*dx)-((2*pi*(N))/(N*dx))/2;%Free space transfer functionH(n,m)=exp(j/(2*ko)*z*(Kx(m)^2+Ky(n)^2));endend%Gaussian Beam in Frequency domainFGau=fft2(Gau);FGau=fftshift(FGau);%Propagated Gaussian beam in Frequency domainFGau_pro=FGau.*H;%Peak amplitude of the initial Gaussian beamPeak_ini=max(max(abs(Gau)));sprintf('Initial peak amplitude is %f [mm]',Peak_ini)%Propagated Gaussian beam in space domainGau_pro=ifft2(FGau_pro);Gau_pro=Gau_pro;%Peak amplitude of the propagated Gaussian beamPeak_pro=max(max(abs(Gau_pro)));sprintf('Propagated peak amplitude is %f [mm]',Peak_pro)%Calculated Beam Width[N M]=min(abs(x));Gau_pro1=Gau_pro(:,M);[N1 M1]=min(abs(abs(Gau_pro1)-abs(exp(-1)*Peak_pro)));Bw=dx*abs(M1-M)*10^3;sprintf('Beam width(numerical) is %f[mm]',Bw)%Theoretical Beam Width W=(2*z_ray)/ko*(1+(z/z_ray)^2);W=(W^0.5)*10^3;sprintf('Beam width(theoretical) is %f[mm]',W)%axis in mm scalex=x*10^3;y=y*10^3;figure(1);mesh(x,y,abs(Gau))title('Initial Gaussian Beam')xlabel('x [mm]')ylabel('y [mm]')axis([min(x) max(x) min(y) max(y) 0 1])axis squarefigure(2);mesh(x,y,abs(Gau_pro))title('propagated Gaussian Beam')xlabel('x [mm]')ylabel('y [mm]')axis([min(x) max(x) min(y) max(y) 0 1])axis square程序主要根据高斯光束的传播规律计算传播过程中任意z处的高斯光强分布。

运行结果:Number of samples(enter from 100 to 500)=500wavelength of light in [micrometers]=0.568Waist of Gaussian Beam in [mm]=1ans =Rayleigh range is 5530.972982 [mm]Propagation length (z) in [mm]100000ans =Initial peak amplitude is 1.000000 [mm]ans =Propagated peak amplitude is 0.210252 [mm]ans =Beam?width(numerical) is 1.940000[mm]ans =Beam?width(theoretical) is 18.107635[mm]>>束腰半径处的理想高斯光强分布传播1m处的理想高斯光强分布传播10m处的理想高斯光强分布传播20m处的理想高斯光强分布传播30m处的理想高斯光强分布传播50m处的理想高斯光强分布传播100m处的理想高斯光强分布而用实验测得的光斑仿真的结果是:原始光斑的光强分布0.1m处1m处1.8m处5m处10m以后,已经基本是均匀强度的光斑。

相关文档
最新文档