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

合集下载

光纤光学matlab仿真

光纤光学matlab仿真

在MATLAB中进行光纤光学仿真可以通过数值模拟和解方程组来模拟光的传播、衍射、衰减等光学现象。

以下是一个简单的光纤光学仿真的一般步骤:
1. 建立光纤模型:
首先,确定光纤的基本参数,例如折射率、直径、长度等。

这些参数将决定光在光纤中的传播特性。

2. 定义入射光源:
在仿真中,定义光源的参数,例如波长、功率、入射角等。

这可以通过定义入射光的波函数来实现。

3. 求解传播方程:
光在光纤中的传播可以通过解相应的偏微分方程(PDE)来模拟。

根据光的波动性质,一般可以使用薛定谔方程或亥姆霍兹方程来描述。

4. 数值求解:
使用MATLAB的数值求解工具箱,例如pdepe函数,对求解的光学方程进行数值模拟。

5. 绘制仿真结果:
使用MATLAB的绘图工具,例如plot函数,可视化仿真结果。

6. 考虑衍射和衰减:
根据光纤的特性,考虑衍射和衰减等现象,更新光学方程。

7. 优化和分析:
通过调整光纤参数,观察光的传播特性,进行性能分析和优化。

注意事项:
•要考虑光在光纤中的多模式传播,可以引入模式耦合的描述。

•对于三维传播,可以将方程扩展到三维,并使用相应的求解方法。

•使用合适的数值方法,例如有限元法、有限差分法等。

以上是一个简单的光纤光学仿真的概要步骤。

具体仿真的复杂性取决于问题的具体情况和所需的精度。

MATLAB提供了强大的工具箱,包括数值求解、绘图、优化等,可用于实现高度复杂的光学仿真。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Matlab技术在光学模拟中的应用

Matlab技术在光学模拟中的应用

Matlab技术在光学模拟中的应用光学模拟是一种通过计算机仿真来模拟光的传播与相互作用的技术。

在光学领域,光的传播、干涉、衍射等现象都可以通过光学模拟软件来进行计算和预测。

而Matlab作为一种强大的数学软件,具备丰富的数值计算和数据分析功能,被广泛应用于光学模拟中。

本文将重点介绍Matlab技术在光学模拟中的应用。

一、折射率分布模拟光的传播和反射是光学模拟的基础,而折射率分布是决定光的传播轨迹的重要参数。

在光学元件的设计和优化中,需要对光在介质中的传播进行模拟,以得到相应的传播特性。

Matlab提供了强大的数值计算和优化工具,可以用来模拟不同材料的折射率分布和光的传播路径,从而指导光学元件的设计和性能优化。

二、光场传播模拟在光学模拟中,光的传播路径和光场分布是重要的模拟对象。

Matlab的计算工具箱中提供了光场传播的模拟算法,能够精确计算光在不同介质中的传播路径和光强分布。

通过调整模拟参数,可以模拟光在复杂介质中的传播过程,如非线性介质、多层介质等,为光学元件的设计和性能评估提供重要参考。

三、衍射和干涉模拟衍射和干涉是光学中常见的现象,涉及到波动光学的基本原理。

Matlab提供了丰富的信号处理和频谱分析工具,可以模拟光的波动特性,如衍射图样和干涉条纹的生成。

通过调整模拟参数,可以精确模拟不同衍射和干涉现象,为光学元件的设计和性能评估提供重要参考。

四、光学系统建模和优化在光学系统设计中,需要将多个光学元件组合起来,形成一个完整的光学系统。

Matlab提供了方便的建模和优化工具,可以对光学系统进行建模和性能优化。

通过调整系统参数和优化策略,可以得到最优的设计方案和性能指标,提高光学系统的整体效率和性能。

五、光学传感器仿真光学传感器是一种通过光信号来感测和测量环境中信息的传感器。

Matlab具备强大的信号处理和数据分析功能,可以用于光学传感器的仿真和优化。

通过模拟光学传感器的光信号特性和光学元件的响应特性,可以评估传感器的灵敏度和性能,优化光学传感器的设计参数。

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仿真教学内容

高斯光束的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])画三维强度分布。

Matlab中的运动规划和轨迹生成技巧

Matlab中的运动规划和轨迹生成技巧

Matlab中的运动规划和轨迹生成技巧引言:Matlab是一种功能强大的数学软件,广泛用于科学研究、工程计算和数据分析等领域。

在机器人技术中,运动规划和轨迹生成是非常重要的环节。

本文将介绍在Matlab中进行运动规划和轨迹生成的一些基本技巧和实用工具,帮助读者更好地掌握这一领域。

一、运动规划基础运动规划是研究如何使机器人在给定约束条件下完成所需任务的过程。

常见的运动规划方法包括逆向运动学、欧拉角和四元数表示等。

在Matlab中,可以使用机器人学工具箱(Robotics Toolbox)来进行运动规划。

该工具箱提供了一系列函数,用于实现机器人的正逆向运动学计算、碰撞检测和轨迹规划等功能。

二、轨迹生成技巧1. 插值法轨迹的插值是生成平滑运动的常用技巧。

Matlab中有多种插值方法,如线性插值、样条插值和最小二乘法插值等。

通过对已知数据点进行插值,可以得到平滑的轨迹曲线,使机器人的运动更加平稳。

2. 优化算法优化算法常用于解决轨迹生成中的优化问题。

Matlab中提供了一些强大的优化函数,如fmincon和fminunc等。

可以使用这些函数对运动学约束、机器人能力和任务目标进行优化,并生成最佳轨迹。

三、示例应用为了更好地理解运动规划和轨迹生成技巧在实际应用中的作用,我们以机械臂路径规划为例进行说明。

假设我们有一个三自由度机械臂,需要实现从初始位置到目标位置的平滑运动。

首先,我们可以利用机器人学工具箱计算机械臂的逆向运动学,确定关节角度。

然后,通过插值法生成关节角度的平滑过渡曲线,并利用优化算法解决机械臂关节运动的优化问题。

最后,根据优化的结果,通过逆向运动学计算获得末端执行器的位置和姿态,从而生成最佳轨迹。

四、工具箱推荐除了Matlab内置的机器人学工具箱外,还有一些第三方工具箱可以用于运动规划和轨迹生成。

例如,Peter Corke开发的Robotics System Toolbox是一个强大且易于使用的工具箱,提供了丰富的功能,包括机器人建模、路径规划和轨迹生成等。

瑞利衰落信道和高斯信道matlab

瑞利衰落信道和高斯信道matlab

瑞利衰落信道和高斯信道是无线通信中常见的两种信道模型。

瑞利衰落信道适用于描述城市中的移动通信环境,而高斯信道则适用于描述开阔地带或者室内的通信环境。

本文将使用Matlab来分别模拟这两种信道,并对模拟结果进行分析和比较。

一、瑞利衰落信道模拟1. 利用Matlab中的rayleighchan函数可以模拟瑞利衰落信道。

该函数可以指定信道延迟配置、多径增益和相位等参数。

2. 我们需要生成随机的信号序列作为发送端的信号。

这里可以使用Matlab中的randn函数生成高斯白噪声信号作为发送端信号的模拟。

3. 接下来,我们需要创建一个瑞利衰落信道对象,并指定相应的参数。

这里可以设定信道延迟配置、多径增益和相位等参数,以便更好地模拟实际的信道环境。

4. 将发送端的信号通过瑞利衰落信道进行传输,即将信号与瑞利衰落信道对象进行卷积操作。

5. 我们可以通过Matlab中的plot函数绘制发送端和接收端信号的波形图以及信号经过瑞利衰落信道后的波形图,以便直观地观察信号经过信道传输后的变化。

二、高斯信道模拟1. 与瑞利衰落信道模拟类似,高斯信道的模拟同样可以使用Matlab 中的函数进行实现。

在高斯信道的模拟中,我们同样需要生成随机的信号序列作为发送端的信号。

2. 我们可以通过Matlab中的awgn函数为发送端信号添加高斯白噪声,模拟信号在传输过程中受到的噪声干扰。

3. 我们同样可以使用plot函数绘制发送端和接收端信号的波形图以及信号经过高斯信道后的波形图,以便观察信号传输过程中的噪声干扰对信号的影响。

三、模拟结果分析和比较对于瑞利衰落信道模拟结果和高斯信道模拟结果,我们可以进行一些分析和比较:1. 信号衰落特性:瑞利衰落信道模拟中,我们可以观察到信号在传输过程中呈现出快速衰落的特性,而高斯信道模拟中,信号的衰落速度相对较慢。

2. 噪声干扰:高斯信道模拟中,我们可以观察到添加了高斯白噪声对信号的影响,而在瑞利衰落信道模拟中,虽然也存在噪声干扰,但其影响相对较小。

matlab仿真光束的传输特性综述

matlab仿真光束的传输特性综述

一、课程设计题目:用matlab 仿真光束的传输特性。

二、任务和要求用matlab 仿真光束通过光学元件的变换。

① 设透镜材料为k9玻璃,对1064nm 波长的折射率为1.5062,镜片中心厚度为3mm ,凸面曲率半径,设为100mm ,初始光线距离透镜平面20mm 。

用matlab 仿真近轴光线(至少10条)经过平凸透镜的焦距,与理论焦距值进行对比,得出误差大小。

② 已知透镜的结构参数为101=r ,0.11=n ,51=d ,5163.121=='n n (K9玻璃),502-=r ,0.12='n ,物点A 距第一面顶点的距离为100,由A 点计算三条沿光轴夹角分别为10、20、30的光线的成像。

试用Matlab 对以上三条光线光路和近轴光线光路进行仿真,并得出实际光线的球差大小。

③ 设半径为1mm 的平面波经凸面曲率半径为25mm ,中心厚度3mm 的平凸透镜。

用matlab 仿真平面波在透镜几何焦平面上的聚焦光斑强度分布,计算光斑半径。

并与理论光斑半径值进行对比,得出误差大小。

(方法:采用波动理论,利用基尔霍夫—菲涅尔衍射积分公式。

)2、用MATLAB 仿真平行光束的衍射强度分布图样。

(夫朗和费矩形孔衍射、夫朗和费圆孔衍射、夫朗和费单缝和多缝衍射。

)3、用MATLAB仿真厄米—高斯光束在真空中的传输过程。

(包括三维强度分布和平面的灰度图。

)4、(补充题)查找文献,掌握各类空心光束的表达式,采用费更斯-菲涅尔原理推导各类空心光束在真空中传输的光强表达式。

用matlab 对不同传输距离处的光强进行仿真。

三、理论推导部分将坐标原点选在透镜中心处,θ1=arcsin(y1/r),由n1*sinθ1=n2*sinθ2可得出θ2=arcsin(n1/n2)*(y1/r),由几何关系可得到θ=θ2-θ1,则出射光线的斜率k=tan(θ2-θ1),当入射直线y=y1时,x1=d-(r-(yr ),并设出射直线为y=k*x+b;由直线经过(x1,y1)即可求2^)2^1出b值,从而就可以求出射直线。

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参数来描述高斯光束的基本特征和传输规律。

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

高斯光束及其传播特性的仿真
高斯光束及其传播特性的仿真
高斯光束的基本性质
稳态传输的电磁场满足亥姆霍兹方程: (4.1) 容易证明,平面波和球面波都是式 (4.1) 的特解。高斯 光束则不同,它不是式(4.1)的精确解,而是缓变振幅近似 (SVA)下的一个特解。在柱坐标系中设 (4.3) E (r , z ) A(r , z ) exp(ikz) 因此可得到形如
2

(4.15)
( z ) tan1
z 1 z tan 2 ZR w0
(4.16) (4.17)
将式(4.14)带入式(4.3)可将E(r,z)表示为
2 A0 w0 r2 r E (r , z ) exp 2 exp i k z ( z ) w( z ) w ( z) 2 R( z )
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,即研究入射与出射高 斯光束束腰间的变换问.28)
用复参数q可将式(4.14)简洁地表示为
ikr 2 iZ R A(r , q ) A0 exp q 2q
(4.29)
这样高斯光束可由复参数q确定。当q已知时,R(z)、 w(z)可按下式求出:
1 1 Re R q
物像比例公式:
wi
(4.61)
(s
fw0 f) Z
2
0

基于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读取实际激光光斑照片中所记录的强度数据(读取照片中光斑的一个直径所记录的强度数据即可,Matlab读取照片数据命令为imread),用该数据画出图片中激光光斑的强度二维分布图,与之前数学模型仿真图对比。

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

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

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

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

图3 理论高斯曲线50100150200020406080100120140160180实验测量高斯曲线-40-30-20-1001020304000.20.40.60.81理论高斯曲线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])画三维强度分布。

高斯光束传播及其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读取照片数据命令为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])画三维强度分布。

光束法matlab程序 -回复

光束法matlab程序 -回复

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

光纤内脉冲信号传输仿真(包含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)。

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

function varargout = B1(varargin)% B1 M-file for B1.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 in B1.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 application% stop. All inputs are passed to B1_OpeningFcn via varargin.%% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)".%% See also: GUIDE, GUIDA TA, 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 EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @B1_OpeningFcn, ...'gui_OutputFcn', @B1_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); elsegui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before B1 is made visible.function B1_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDA TA) % varargin command line arguments to B1 (see V ARARGIN)% Choose default command line output for B1handles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes B1 wait for user response (see UIRESUME)% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line. function varargout = B1_OutputFcn(hObject, eventdata, handles)% varargout cell array for returning output args (see V ARARGOUT); % hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDA TA)% Get default command line output from handles structure varargout{1} = handles.output;% --- Executes on button press in pushbutton1.function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to pushbutton1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure 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)% hObject handle to pushbutton2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure 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)% hObject handle to pushbutton3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDA TA)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)% hObject handle to editW0 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDA TA)% 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.function editW0_CreateFcn(hObject, eventdata, handles)% hObject handle to editW0 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% 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)% hObject handle to editB (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDA TA)% 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.function editB_CreateFcn(hObject, eventdata, handles)% hObject handle to editB (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% 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)% hObject handle to editZ (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDA TA)% 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.function editZ_CreateFcn(hObject, eventdata, handles)% hObject handle to editZ (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% 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)% hObject handle to editf (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure 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.function editf_CreateFcn(hObject, eventdata, handles)% hObject handle to editf (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% 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)% hObject handle to editf1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDA TA)% 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.function editf1_CreateFcn(hObject, eventdata, handles)% hObject handle to editf1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% 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)% hObject handle to editf2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDA TA)% 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.function editf2_CreateFcn(hObject, eventdata, handles)% hObject handle to editf2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% 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.function axes1_ButtonDownFcn(hObject, eventdata, handles)% hObject handle to axes1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% --- Executes on button press in pushbutton4.function pushbutton4_Callback(hObject, eventdata, handles)close(gcf)% hObject handle to pushbutton4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDA TA)% --- Executes on key press over pushbutton4 with no controls selected. function pushbutton4_KeyPressFcn(hObject, eventdata, handles)% hObject handle to pushbutton4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDA TA)。

相关文档
最新文档