高斯光束的matlab仿真复习进程

合集下载

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

光纤光学matlab仿真

光纤光学matlab仿真

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

高斯光束的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中的高斯滤波技术,并提供一步一步的解释和示例代码,帮助读者更好地理解和应用高斯滤波。

第一部分:理论介绍高斯滤波是一种基于高斯函数的滤波技术,其目标是对图像进行平滑处理,以减少噪声和细节信息。

高斯函数是一种钟形曲线,它具有以下特点:1. 对称性:函数在均值处对称,即高斯函数的左右两侧是完全对称的;2. 单峰性:函数只有一个峰值点,均值等于峰值点的位置;3. 零均值:函数的均值为0;4. 正定性:函数的值始终大于等于0。

在高斯滤波中,我们通过应用高斯函数的离散近似来模糊图像。

该函数的离散近似是一个离散的高斯核,用于表示在图像的每个像素点周围的权重。

第二部分:Matlab中的高斯滤波函数Matlab是一种强大的数值计算和科学计算环境,它提供了许多内置的函数和工具箱,可以轻松实现高斯滤波。

其中,"imgaussfilt"是Matlab中用于执行高斯滤波的函数之一。

该函数的基本语法如下:filtered_image = imgaussfilt(original_image, sigma);- "original_image"是输入图像,可以是灰度图像或彩色图像;- "sigma"是高斯核的标准差,用于控制滤波器的模糊程度。

较小的标准差会产生较强的模糊效果,较大的标准差会产生较弱的模糊效果。

此外,还可以使用其他可选参数来调整滤波器的行为:- "FilterSize":指定高斯核的大小,默认为3。

(完整word版)MATLAB环境下的正弦信号及高斯白噪声仿真程序说明

(完整word版)MATLAB环境下的正弦信号及高斯白噪声仿真程序说明

MATLAB 环境下的正弦信号及高斯白噪声仿真程序说明一、信号的产生及时域观察1、设定正选信号的频率为10HZ ,抽样频率为100HZ ;2、设定N(0,0.25)高斯白噪声,及噪声功率为0.25W ;3、最后将噪声叠加到正弦信号上,观察其三者时域波形。

二、信号频谱及白噪声功率谱的求解与观察1、对原正弦信号直接进行FFT ,得出其频谱;2、求白噪声的自相关函数,随机序列自相关函数的无偏估计公式为:1^01()()()N m xx n r m x n x n m N m --==+-∑ 01m N ≤≤- ^^()()xx xx r m r m =- 01m N <<-对所求自相关函数进行FFT 变换,求的白噪声的功率谱函数。

源程序:1.产生正弦信号fs=100;fc=10;x=(0:1/fs:2);n=201;y1=sin(2*pi*fc*x); %原正弦信号,频率为10a=0;b=0.5; %均值为a ,方差为b^2subplot(2,2,1);plot(x,y1,'r');title('y=sin(20pi*x)');ylabel('y');xlabel('x/20pi');grid;2.产生高斯白噪声y2=a+b*randn(1,n); %高斯白噪声subplot(2,2,2);plot(x,y2,'r');title('N(0,0.25)的高斯白噪声');ylabel('y');xlabel('x/20pi');grid;3.复合信号y=y1+y2; %加入噪声之后的信号subplot(2,2,3);plot(x,y,'r');title('混合信号');ylabel('y');xlabel('x/20pi');grid;4.复合信号功率谱密度%求复合信号的自相关函数m=50;i=-0.49:1/fs:0.49;for j=1:mR(j)=sum(y(1:n-j-1).*y(j:199),2)/(n-j);%无偏自相关函数的估计Rx(49+j)=R(j);Rx(51-j)=R(j);endFy2=fft(Rx); %傅里叶变换得出复合信号功率谱函数Fy21=fftshift(Fy2); %功率谱校正f=(0:98)*fs/99-fs/2;subplot(2,2,4);plot(f,abs(Fy21),'r');axis([-50 50 -0.5 1]);title('复合信号功率谱函数图');ylabel('F(Rx)');xlabel('w');grid;。

高斯-赛德尔迭代法matlab程序

高斯-赛德尔迭代法matlab程序

高斯-赛德尔迭代法m a t l a b程序-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIANdisp('划分为M*M个正方形')M=5 %每行的方格数,改变M可以方便地改变剖分的点数u=zeros(M+1);%得到一个(M+1)*(M+1)的矩阵disp('对每个剖分点赋初值,因为迭代次数很高,所以如何赋初值并不重要,故采用对列线性赋值。

')disp('对边界内的点赋初值并使用边界条件对边界赋值:')for j=1:M-1for i=1:M-1u(i+1,j+1)=100*sin(pi/M*j)/M*(M-i);%对矩阵(即每个刨分点)赋初值endendfor i=1:M+1u(1,i)=100*sin(pi*(i-1)/M);%使用边界条件对边界赋值u(1,M+1)=0;endutic %获取运行时间的起点disp('迭代次数为N')N=6 %迭代次数,改变N可以方便地改变迭代次数disp('n为当前迭代次数,u为当前值,结果如下:')for n=1:Nfor p=2:Mi=M+2-p;for j=2:Mu(i,j)=*(u(i,j-1)+u(i+1,j)+u(i-1,j)+u(i,j+1));%赛德尔迭代法endendn %输出nu %输出uenddisp('所用的时间:')t=toc %获取算法运行需要的时间[x,y]=meshgrid(0:1/M:1,0:1/M:1);z=u(1,:);for a=2:M+1z=[z;u(a,:)];%获取最终迭代的结果,幅值给z,z的值代表该点的点位值endmesh(x,y,z)%绘制三维视图以便清楚地显示结果mesh(x,y,z,'FaceColor','white','EdgeColor','black') %绘制三维视图以便清楚地显示结果。

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仿真

题目:根据高斯光束数学模型,模拟仿真高斯光束在谐振腔中某一位置处的归一化强度分布并给出其二维、三维强度分布仿真图;用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中,可以通过以下步骤实现反常高斯漩涡光束的模拟:
1. 定义反常高斯漩涡光束的参数,包括振幅、波长、漩涡阶数、高斯因子等。

2. 构造反常高斯漩涡光束的振幅分布,可以使用公式:
U(r,theta) = A * exp(-(r/w)^2) * exp(-i * l * theta) * exp(-(r/w)^2)^(2p+1)
其中,r和theta分别表示极坐标系下的径向和角向坐标,A为振幅,w为高斯因子,l为漩涡阶数,p为反常高斯漩涡光束的指数。

3. 根据振幅分布和波长计算相位分布,可以使用公式:
phi(r,theta) = k * r^2 / (2 * f) + l * theta
其中,k为波数,f为焦距。

4. 将振幅分布和相位分布组合起来,得到反常高斯漩涡光束的复振幅分布。

5. 可以使用Matlab的图形绘制函数,如surf、mesh等,将光束的复振幅分布可视化。

需要注意的是,反常高斯漩涡光束的实现过程比较复杂,需要对Matlab的数学计算和图形绘制函数有一定的掌握。

同时,需要根据具体应用场景和实验条件调整光束的参数,以达到最佳的实验效果。

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 高斯光束传播轨迹的模拟

MATLAB 高斯光束传播轨迹的模拟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 \% instance to run (singleton)\%% See also: GUIDE, GUIDATA, GUIHANDLES% Copyright 2002-2021 The MathWorks, Inc.% Edit the above text to modify the response to help B1% Last Modified by GUIDE v2.5 21-Oct-2021 17:52:32% Begin initialization code - DO NOT EDIT gui_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) % Thisfunction 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 GUIDATA) % varargin command line arguments to B1 (see VARARGIN)% Choose default command line output for B1 handles.output = hObject;% Update handles structure guidata(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) % varargoutcell array for returning output args (see VARARGOUT); % hObject handle tofigure% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% 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 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) % 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 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. 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 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. 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 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. 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感谢您的阅读,祝您生活愉快。

高斯过程的matlab程序实现

高斯过程的matlab程序实现

高斯过程的matlab程序实现高斯过程作为一种强大的建模工具,广泛应用于各种领域,如机器学习、统计学、信号处理等。

Matlab作为一种功能强大的编程语言和计算软件,在高斯过程的实现方面提供了很好的支持。

本文将介绍高斯过程的基本理论和Matlab程序实现,以帮助读者了解和应用这一工具。

一、高斯过程基本理论高斯过程(Gaussian Process,简称GP)是一种用于处理连续随机变量的方法,它是一组无限个随机变量的集合,任意一组随机变量的联合分布都是高斯分布,且每个随机变量是对其他随机变量的线性组合。

也就是说,高斯过程可以看作是高斯分布的一个推广,它不再是单个随机变量的分布,而是一组随机变量的联合概率分布。

高斯过程的定义如下:设X是定义在D上的高斯过程,当对于任意的n个点$x_1,x_2,...,x_n$,其联合分布$(X(x_1),X(x_2),...,X(x_n))$服从高斯分布,且其均值向量为0,协方差矩阵为$K(x_i,x_j)$ ,即:$$\begin{bmatrix}X(x_1)\\X(x_2)\\\vdots\\X(x_n)\end{bmatrix} \sim\mathbb{N}\left(\begin{bmatrix}0\\0\\\vdots\\0\end{bmatrix}, \begin{bmatrix}K(x_1,x_1) &K(x_1,x_2) & \cdots & K(x_1,x_n)\\ K(x_2,x_1) &K(x_2,x_2) & \cdots & K(x_2,x_n)\\ \vdots & \vdots & \ddots & \vdots\\ K(x_n,x_1) & K(x_n,x_2) &\cdots & K(x_n,x_n)\end{bmatrix}\right)$$其中,协方差函数$K(x_i,x_j)$的选择是高斯过程的核心,直接影响着高斯过程的性质和应用效果。

高斯光束的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模拟高阶拉盖尔和厄密高斯光束

作业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进行模拟。

1. 首先,使用高斯函数定义电场分布。

高斯光束的电场分布近似满足高斯函数,可以用Matlab中的高斯函数进行模拟。

2. 其次,使用光学传播方程求解光束的传播。

在光学中,高斯光束的传播可以用亥姆霍兹方程描述。

在Matlab中,可以使用数值方法求解这个方程,得到光束在传播过程中的电场分布。

3. 最后,观察焦场。

当高斯光束经过透镜后,会在透镜的另一侧形成焦场。

在Matlab中,可以模拟这个过程并观察焦场的电场分布。

以上是模拟高斯光束焦场的一种方法,如果想要了解更多相关方法,建议请教光学专家。

matlab模拟高斯光束能量分布曲线

matlab模拟高斯光束能量分布曲线

高斯光束是一种特殊的光束,它的能量分布呈现高斯分布曲线。

在实际应用中,我们经常需要对高斯光束进行模拟和分析。

而MATLAB作为一种强大的数学建模和仿真工具,可以很好地用于模拟高斯光束的能量分布曲线。

一、高斯光束的基本特性高斯光束具有许多重要的特性,其中能量分布曲线是其最为重要的特性之一。

在空间中,高斯光束的能量分布呈现出类似钟形的曲线,这种分布特性使得高斯光束在横截面上的能量密度呈现出中心最大、边缘逐渐减小的分布规律。

这种能量分布特性使得高斯光束在许多光学应用中具有重要的作用,例如在激光技术、光通信、光束成形等领域广泛应用。

二、MATLAB模拟高斯光束能量分布曲线的基本原理在MATLAB中,我们可以利用其强大的数学计算和可视化功能,模拟高斯光束的能量分布曲线。

模拟高斯光束能量分布曲线的基本原理如下:1. 我们需要定义高斯光束的基本参数,包括光束的波长、光束的焦距、光束的起始相位等。

这些参数将直接影响到高斯光束的能量分布曲线。

2. 我们利用MATLAB中的数学计算工具,根据高斯光束的传播方程和光束的基本参数,计算出在空间中各个位置上光束的能量密度。

3. 利用MATLAB中的可视化工具,将计算得到的能量分布曲线以图形的形式展现出来。

这样我们就可以直观地观察到高斯光束的能量分布特性。

三、MATLAB模拟高斯光束能量分布曲线的具体步骤在MATLAB中,模拟高斯光束能量分布曲线的具体步骤如下:1. 定义高斯光束的基本参数,包括波长、焦距、起始相位等。

可以利用MATLAB中的变量和常数进行定义。

2. 根据高斯光束的传播方程和基本参数,计算出在空间中各个位置上光束的能量密度。

可以利用MATLAB中的数学计算工具,如矩阵运算、积分运算等进行计算。

3. 利用MATLAB中的可视化工具,将计算得到的能量分布曲线以图形的形式展现出来。

可以利用MATLAB中的plot函数、surf函数等进行可视化展示。

四、实例分析下面我们以一个具体的实例来演示如何利用MATLAB模拟高斯光束的能量分布曲线。

  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所示。

图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])画三维强度分布。

取图片矩阵的中间层,用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以后,已经基本是均匀强度的光斑。

相关文档
最新文档