资源描述
测试与光电工程学院课程设计任务书 测控技术与仪器 系 090812 班 学号 09081209 姓名 王若珏 课题名称: 电流环磁场的分布 课题要求:1. 建立电流环磁场模型2. 掌握图形的绘制3. 编写图形显示界面4. 显示电流环磁场分布图课题进程:第一周:确定使用哪种计算机语言编程; 编写主要功能。第二周:程序的完善、运行与调试;撰写课程设计报告。 指导教师: 袁丽华 【摘要】 MATLAB是由美国MathWorks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。 本课程设计根据毕奥一萨伐尔定律推导出圆环电流磁场分布的积分表示,利用MATLAB的符号积分得出计算结果,并绘制磁场分布曲线。并通过GUI制作可交互式界面进行仿真与演示。本课程设计选用MATLAB R2008a软件。 关键词: 圆环电流;磁场;MATLAB;符号积分;GUI 目录一 引言11.1 课题简介11.2 课题制作要点11.3 MATLAB软件1二 理论分析22.1 毕奥一萨伐尔定律22.2 电流元在圆环外的磁场22.3 电流元在圆环内的磁场32.4 距离圆心z处的磁感应强度3三 程序设计43.1 GUI界面设计43.1.1 创建GUI文件43.1.2 GUI布局与控件设计43.1.3 GUI菜单栏设计63.2 功能实现63.2.1 菜单功能63.2.2 绘图设置相关控件功能实现7四 GUI运行效果114.1 GUI初始化效果114.2 菜单栏效果114.3 绘图效果12五 心得体会 13六 参考文献13一 引言1.1 课题简介圆电流是一个经典的物理模型。对圆电流内磁场分布特性的研究,在宏观上可以改善线圈绕组在电机中的应用。微观上。可以给分子电流提供理论基础,对进一步研究磁介质的磁性特征也有重要参考价值。本课题主要着重于对电流环磁场进行建模与仿真,根据毕奥一萨伐尔定律通过设定电流环半径、电流强度,模拟不同情况下磁场与磁感线的分布情况,并绘制成图像。 1.2 课题制作要点 电流环磁场参数的设定 电流环磁场的建模与仿真 可交互式GUI界面的设计1.3 MATLAB软件简介MATLAB是由美国MathWorks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。MATLAB是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如C和C+ 。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。新版本的MATLAB对整个图形处理功能作了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能而且对于一些其他软件所没有的功能,MATLAB同样表现了出色的处理能力。同时对一些特殊的可视化要求,另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。 二 理论分析2.1 毕奥一萨伐尔定律毕奥一萨伐尔定律是以实验为基础经过科学抽象而得到的,描述的是电流元在空间任一点产生的磁感应强度。原则上利用毕奥一萨伐尔定律并结合磁感应强度叠加原理,可以计算任意形状的电流所产生的磁场。 毕奥萨伐尔定律指出:载流导线上的电流元在真空中某点P的磁感度dB的大小与电流元的大小成正比,与电流元和从电流元到P点的位矢r之间的夹角 的正弦成正比,与位矢r的大小的平方成反比,即: 上式中,为位矢的单位矢量。此即毕奥萨伐尔定律的公式表述。2.2 电流元在圆环外的磁场 图1 电流元在电流环外的磁场如图1所示,根据毕奥一萨伐尔定律,任一电流元在P点产生的磁感应强度 ,考虑到,, 有(1)。2.3 电流元在圆环内的磁场 图2 电流元在电流环内的磁场 如图2所示,电流元在P点所产生的磁感应强度,即(2)。2.4 距离圆心z处的磁感应强度比较电流元在圆环内、外的磁场表达式,两式仅相差一个负号。该负号体现了两种情况下磁场方向正好相反。若规定垂直纸面向外为磁感应强度的正方向,则电流元在圆环内、外产生的磁感应强度可统一表示为( 2 )式的形式。结合磁感应强度叠加原理,整个圆环电流在距圆心处产生的磁感应强度为: 三 程序设计3.1 GUI界面设计3.1.1 创建GUI文件打开MATLAB软件后,点击菜单栏中的“GUIDE”按钮,进入“GUIDE quick start”,选择“Create New GUI”选项卡,选择“Blank GUI(default)”创建一空白GUI文档。并命名为“cichang1.fig”如图3所示。图3 创建一空白GUI3.1.2 GUI布局与控件设计 GUI布局如图4,所用控件罗列于表1。图4 GUI布局控件名称控件属性控件用途FontSizeString(Title)TagPanel15绘图设置uipanel4放置绘图设置的其他控件Panel15视角切换uipanel3放置用于视角切换的控件Axesaxes1显示磁场及磁感线分布图像Static Text25带电电流环周围空间的磁场分布text1标题Static Text15电流值text3显示Static Text15Atext4电流值单位Static Text15环半径text5显示Static Text15mtext6环半径单位Listbox15电流环的磁场分布图;电流环的磁感线分布图listbox1选择绘图类型Push Button15绘制图像pushbutton2绘制图像Push Button15重置参数pushbutton7重置参数Edit Text15edit3设置电流参数值Edit Text15edit4设置环半径数值Edit Text15测试图edit1显示图像名称Radio Button12自由视角radiobutton1开启三维图像自由视角Radio Button12锁定视角radiobutton1关闭三维图像自由视角表1 所用控件3.1.3 GUI菜单栏设计为使用户获得更方便的使用体验,故增加菜单栏。点击“Menu Editor”进行制作。如图5。图5 菜单栏编辑3.2 功能实现GUI界面设计过后,对相关控件的“View Callbacks”中的函数进行编辑,以实现既定功能。3.2.1 菜单功能(1) 菜单栏中的退出功能 点击“Menu Editor”中的“退出”选项,设置Tag属性为“Untitled_1”,并对回调函数进行编辑。如图6.图6 退出功能编辑程序代码如下:function Untitled_1_Callback(hObject, eventdata, handles)selection=questdlg(是否关闭,get(gcf,Name),窗口?, . Close ,get(gcf,Name),.,是,否,是);if strcmp(selection,否) return; else clc;%当选择关闭时,清空所有matla输入面上的所有错误信息,同时关闭图像窗口 clear all;delete(gcf); End(2) 菜单栏中的说明功能 点击“Menu Editor”中的“说明”选项,设置Tag属性为“Untitled_2”,并对回调函数进行编辑。程序代码如下:function Untitled_2_Callback(hObject, eventdata, handles)msgbox(利用毕奥萨伐尔定律作图,说明)3.2.2 绘图设置相关控件功能实现 (1) 选择绘制图像类型 当选择“listbox1”中的某一选项时,坐标轴下方的“EditText”也显示相应的文字说明。鼠标右键点击“listbox1”选择“View Callbacks”中的“Callback”进行编辑。如图7。图7 程序代码如下:function listbox1_Callback(hObject, eventdata, handles)selected.index=get(handles.listbox1,value);str=get(handles.listbox1,string);set(handles.edit1,string,strselected.index);(2) 绘制图像按钮功能实现 当使用者选择好所要绘制的图像类型后,点击“绘制图像”按钮,则在坐标轴中出现相应的图像。图像下方的文本框中显示图像名称。对“PushButton 2”的回调函数进行编辑。程序代码如下:function pushbutton2_Callback(hObject, eventdata, handles)axes(handles.axes1);cla;popup_sel_index = get(handles.listbox1, Value);Rh=str2double(get(handles.edit4, String); %通过edit4输入环半径值I0=str2double(get(handles.edit3, String); %通过edit3输入电流值switch popup_sel_index case 1mu0=4*pi*1e-7; c0=mu0/(4*pi)*I0; Nh=40; %将电流分段为40段x=linspace(-3,3,Nh);y=x; %确定观察点的范围 thta0=linspace(0,2*pi,Nh+1); %环周的分段数 thta1=thta0(1:Nh);y1=Rh*cos(thta1); %环各段矢量的起点坐标y1,z1;z1=Rh*sin(thta1);thta2=thta0(2:Nh+1); y2=Rh*cos(thta2); %环各段矢量的起点坐标y2,z2; z2=Rh*sin(thta2); xc=0;yc=(y2+y1)/2;zc=(z2+z1)/2; %计算环各段矢量中点的3个坐标分量 dlx=0;dly=y2-y1;dlz=z2-z1; %计算环各段矢量dl的3个长度分量 NGx=Nh;NGy=NGx; %确定网格数for i=1:NGy %循环计算各网格点上的B(x,y)值 for j=1:NGx rx=x(j)-xc;ry=y(i)-yc;rz=0-zc; r3=sqrt(rx.2+ry.2+rz.2).3; dlxr_x=dly.*rz-dlz.*ry; dlxr_y=dly.*rx-dlx.*rz; Bx(i,j)=sum(c0*dlxr_x./r3); %把环各段产生的磁场分量累加 By(i,j)=sum(c0*dlxr_y./r3); B=(Bx.2+By.2).0.5; %计算B的大小 endendsurf(x,y,B); %绘制磁场分布图像shading interpgrid on case 2mu0=4*pi*1e-7; c0=mu0/(4*pi)*I0;Nh=40; x=linspace(-3,3,Nh);y=x; thta0=linspace(0,2*pi,Nh+1); thta1=thta0(1:Nh); y1=Rh*cos(thta1); z1=Rh*sin(thta1); thta2=thta0(2:Nh+1);y2=Rh*cos(thta2); z2=Rh*sin(thta2); xc=0;yc=(y2+y1)/2;zc=(z2+z1)/2; dlx=0;dly=y2-y1;dlz=z2-z1; NGx=Nh;NGy=NGx; for i=1:NGy for j=1:NGx rx=x(j)-xc;ry=y(i)-yc;rz=0-zc; r3=sqrt(rx.2+ry.2+rz.2).3; dlxr_x=dly.*rz-dlz.*ry; dlxr_y=dly.*rx-dlx.*rz; Bx(i,j)=sum(c0*dlxr_x./r3); By(i,j)=sum(c0*dlxr_y./r3); B=(Bx.2+By.2).0.5; end end quiver(x,y,Bx,By,0.5,LineWidth,1); %绘制磁感线图线 grid on end(3) 重置参数按钮功能实现 初始化GUI图形界面:坐标轴中的图像还原为初始时的“测试图”,坐标轴下方的文本框显示文字“测试图”,EditText3、EditText4无显示,Listbox1中选项显示为“电流环的磁场分布图”,视角切换中的单选框选中“视角锁定”。首先对cichang1.fig中的“OpenFunction”进行编辑。程序代码如下:function cichang1_OpeningFcn(hObject, eventdata, handles, varargin)guidata(hObject, handles); if strcmp(get(hObject,Visible),off) surf(peaks); rotate3d off;end然后对PushButton7的回调函数进行编辑。程序代码如下:function pushbutton7_Callback(hObject, eventdata, handles)cla;surf(peaks);rotate3d off;set(handles.radiobutton2,value,1);set(handles.radiobutton1,value,0);set(handles.edit3,string, );set(handles.listbox1,value,1);set(handles.edit4,string, );set(handles.edit1,string,测试图);(4) 视角切换功能实现 当选择“自由视角”时,用户可通过鼠标自由旋转坐标轴中的图像;当选择“锁定视角”时,用户可以锁定任意视角时的图像。 首先对RadioButton2的回调函数进行编辑。程序代码如下:function radiobutton2_Callback(hObject, eventdata, handles)rotate3d off; 然后对RadioButton1的回调函数进行编辑。程序代码如下:function radiobutton1_Callback(hObject, eventdata, handles)rotate3d on; 最后再保存一次“cichang1.fig”。四 GUI运行效果4.1 GUI初始化效果打开“cichang1.fig ”,显示如图8效果。图84.2 菜单栏效果点击菜单栏“退出”选项,显示一对话框,如点击“是”则关闭GUI,如选择“否”则返回GUI界面。如图9效果。图9点击菜单栏“说明”选项,显示一对话框,如图10效果。图104.3 绘图效果首先分别输入电流值和环半径值两个参数,例如80A,1.5m;之后选择“电流环的磁场分布图”选项,点击“绘制图像”则出现如图11效果。当选择“自由视角”时,可以通过鼠标旋转图像,选定“锁定视角”可以锁定该角度图像,如图12。择“电流环的磁感线分布图”选项,点击“绘制图像”则出现如图13效果。当点击“重置参数”按钮时,出现如图14效果。 图11 图12 图14图13五 心得体会 通过此次课程设计,使我更加扎实的掌握了有关MATLAB GUI、图像处理方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。过而能改,善莫大焉。在课程设计过程中,我不断发现错误,不断改正,不断领悟,不断获取。从初次接触MATLAB GUI编程,到运用物理知识分析电流环磁场的模型,我经历了知识接触、学习到吸收的过程,这使我收获颇多。虽然在设计中遇到了很多问题,但在自己的努力下,还是游逆而解。正所谓“纸上得来终觉浅,绝知此事要躬行”在今后的学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退。六 参考文献1 孙庆龙.利用 MATLAB分析圆环电流在其平面内的磁场分布,20092 陈怀琛.MATLAB及其在理工课程中的应用指南.西安电子科技大学出版 社,2004tgKQcWA3PtGZ7R4I30kA1DkaGhn3XtKknBYCUDxqA7FHYi2CHhI92tgKQcWA3PtGshLs50cLmTWN60eo8Wgqv7XAv2OHUm32WGeaUwYDIAWGMeR4I30kA1DkaGhn3XtKknBYCUDxqA7FHYi2CHhI92tgKQcWA3PtGZ7R4I30kA1DkaGtgKQcWA3PtGZ7R4I30kA1DkaGhn3XtKknBYCUDxqA7FHYi2CHhI92tgKQcWA3PtGshLs50cLmTWN60eo8Wgqv7XAv2OHUm32WGeaUwYDIAWGMeR4I30kA1DkaGhn3XtKknBYCUDxqA7FHYi2CHhI92tgKQcWA3PtGZ7R4I30kA1DkaGtgKQcWA3PtGZ7R4I30kA1DkaGhn3XtKknBYCUDxqA7FHYi2CHhI92tgKQcWA3PtGshLs50cLmTWN60eo8Wgqv7XAv2OHUm32WGeaUwYDIAWGeR4I30kA1DkaGhn3XtKknBYCUDxqA7FHYi2CHhI92tgKQcWA3PtGZ7R4I30kA1DkaGtgKQcWA3PtGZ7R4I30kA1DkaGhn3XtKknBYCUDxqA7FHYi2CHhI92tgKQcWA3PtGshLs50cLmTWN60eo8Wgqv7XAv2OHUm32WGeaUwYDIAWGMeR4I30kA1DkaGhn3XtKknBYCUDxqA7FHYi2CHhI92tgKQcWA3PtGZ7R4I30kA1DkaGtgKQcWA3PtGZ7R4I30kA1DkaGhn3XtKknBYCUDxqA7FHYi2CHhI92tgKQcWA3PtGshLs50cLmTWN60eo8Wgqv7XAv2OHUm32WGeaUwYDIAWGMeR4I30kA1DkaGhn3XtKknBYCUDxqA7FHYi2CHhI92tgKQcWA3PtGZ7R4I30kA1DkaGtgKQcWA3PtGZ7R4I30kA1DkaGhn3XtKknBYCUDxqA7FHYi2CHhI92tgKQcWA3PtGshLs50cLmTWN60eo8Wgqv7XAv2OHUm32WGeaUwYDIAWGMeR4I30kA1DkaGhn3XtKknBYCUDxqA7FHYi2CHhI92tgKQcWA3PtGZ7R4I30kA1DkaG
展开阅读全文