高斯光束的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的光学传输仿真工具包,我们可以对高斯光束在自由传输过程中的强度变化进行模拟和分析。

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

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

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

高斯光束的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 仿真光束通过光学元件的变换。

① 设透镜材料为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仿真

题目:根据高斯光束数学模型,模拟仿真高斯光束在谐振腔中某一位置处的归一化强度分布并给出其二维、三维强度分布仿真图;用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环境中的实现与应用光束法是一种广泛应用于结构力学、地震工程、地质力学等领域中的数值计算方法,主要用于求解复杂结构的静力和动力问题。

在MATLAB环境中,我们可以编写程序来实现光束法的计算过程。

以下将详细阐述如何在MATLAB中实现光束法,并通过步骤解析其工作原理。

一、光束法的基本原理光束法的基本思想是将连续的结构离散化为一系列的单元,每个单元视为一个具有特定刚度和质量特性的光束。

通过求解这些单元的平衡方程,可以得到整个结构的位移和应力分布。

二、光束法在MATLAB中的实现步骤1. 结构模型的建立:首先,我们需要在MATLAB中建立结构的几何模型,包括定义单元的数量、长度、截面形状和尺寸等参数。

这通常通过编写MATLAB代码来实现。

2. 刚度矩阵和质量矩阵的计算:对于每个单元,我们需要计算其刚度矩阵和质量矩阵。

这两个矩阵反映了单元对位移和载荷的响应特性。

在MATLAB中,我们可以使用内置的矩阵运算功能来实现这些计算。

3. 装配全局刚度矩阵和质量矩阵:将所有单元的刚度矩阵和质量矩阵组装成全局的刚度矩阵和质量矩阵。

这个过程可以通过循环和矩阵加法操作在MATLAB中实现。

4. 应用边界条件:根据实际问题的边界条件,对全局刚度矩阵进行修改。

例如,如果某个节点的位置或位移已知,那么相应的行或列可以在刚度矩阵中删除。

5. 求解未知节点的位移:通过求解修正后的全局刚度矩阵和外力向量的线性方程组,可以得到所有未知节点的位移。

在MATLAB中,我们可以使用内置的求解器函数(如\或mldivide)来实现这个步骤。

6. 计算结构的应力和应变:根据每个单元的位移和刚度特性,可以计算出单元的应力和应变。

在MATLAB中,我们可以编写相应的函数来实现这些计算。

三、光束法MATLAB程序实例以下是一个简单的光束法MATLAB程序示例,用于计算一个由两个光束单元组成的简支梁的位移和应力:matlab定义单元参数E = 200e9; 弹性模量I = 100; 面积矩L = 1; 单元长度n = 2; 单元数量计算单元的刚度矩阵和质量矩阵k = E*I/L; m = 0.5*I*L;初始化全局刚度矩阵和质量矩阵K = zeros(2*n,2*n);M = zeros(2*n,2*n);装配全局矩阵for i = 1:nK(i,i) = k;K(i,i+n) = -k;K(i+n,i) = -k;K(i+n,i+n) = k;M(i,i) = m;M(i+n,i+n) = m;end应用边界条件K(1,1) = 1;K(end,end) = 1;定义外力向量F = [0; -100];求解未知节点的位移U = K\F;计算单元的应力和应变sigma = k*U(2:2:end);epsilon = sigma/E;以上程序首先定义了单元的参数和数量,然后计算了单元的刚度矩阵和质量矩阵。

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

题目:根据高斯光束数学模型,模拟仿真高斯光束在谐振腔中某一位置处的归一化强度分布并给出其二维、三维强度分布仿真图;用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)%PropagatedGaussian 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以后,已经基本是均匀强度的光斑。

相关文档
最新文档