基于MATLAB GUI的复数函数与积分变换实验教学软件的设计与实现设计.doc

上传人:精*** 文档编号:834764 上传时间:2023-09-07 格式:DOC 页数:27 大小:338.19KB
下载 相关 举报
基于MATLAB GUI的复数函数与积分变换实验教学软件的设计与实现设计.doc_第1页
第1页 / 共27页
基于MATLAB GUI的复数函数与积分变换实验教学软件的设计与实现设计.doc_第2页
第2页 / 共27页
基于MATLAB GUI的复数函数与积分变换实验教学软件的设计与实现设计.doc_第3页
第3页 / 共27页
基于MATLAB GUI的复数函数与积分变换实验教学软件的设计与实现设计.doc_第4页
第4页 / 共27页
基于MATLAB GUI的复数函数与积分变换实验教学软件的设计与实现设计.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、 实验教学软件的设计与实现摘 要复变函数与积分变换是电子、信号、通讯、控制系统等理工学科必备的基础课,有着十分重要的意义。然而复变函数与积分变换的内容主要是大量的抽象理论,使其成为后续专业课程学习和应用的“拦路虎”。 利用MATLAB GUI的开发设计思想和总体结构,结合复数运算及积分变换的特点,采用 MATLAB语言运行于WINDOWS操作系统产生图形界面。从而到达操作简单,图形界面直观,运行稳定,计算准确。在本设计中,将算法做了一些改进,提高了计算速度,各个类的有效封装又使程序具有很好的模块性.可维护性和可重用性。 关键字:matlab;复变函数;积分变换;GUI24Complex fun

2、ction and integral transform experimental teaching software design and implementation based on the MATLAB GUIAbstractComplex operation and integral transforms the lack of a graphical user interface, the result is not intuitive, difficult to be integrated with other analysis functions. Manual calcula

3、tion of the heavy workload and error-prone. With the rapid development ofcomputer technology, launched by the Math Works MATLAB software is a large selection of learning mathematical knowledge, and its very close with the peoples way of thinkingand writing, grammar and expression, efficient, simple,

4、 powerful instruction and function modules, so profound, complex theoretical and mathematical formulas to solve simple.Develop fast, practical complex computing analysis software has become the main trend2. MATLAB GUI development and design ideas and the overall structure, combined with the complex

5、operation and characteristics of integral transforms, and a graphical interface using MATLAB language runtime in the WINDOWS operating system. In order to reach the operation is simple, intuitive graphical interface, stable operation and accurate calculation. In this design, the algorithm is to do s

6、ome improvements to improve the speed and effective package of each class so that the program has good modularity,maintainability and reusability 1.Keyword: MATLAB;complex function;integral transform;the GUI 目 录摘 要IAbstractII2. MATLAB的发展和介绍22.1 MTALAB的发展、介绍22.2 MATLAB的优点23. 需求分析和总体设计53.1 需求分析53.2 总体

7、设计53.3 算法说明54.1 MATLAB GUI的介绍94.2 GUI 准则104.3 GUI运行环境的搭建105算法的实现125.1 设计界面以及相关回调函数的生成125.2 运算界面设计的基本思路125.3 图形界面的回调函数13附录181. 前 言传统的复数运算和积分变换缺乏图形用户界面,结果显示不直观,难于与其他分析功能集成。人工计算工作量大且易于出错。随着计算机技术的飞速发展,Math Works公司推出的MATLAB软件是学习数理知识的一大选择,其有着与人们的思维方式及书写方式十分接近的语法及表达方式,其高效、简捷、功能强大的指令及功能模块,使得高深、复杂的理论问题和数学公式的

8、求解变得简单。因此开发具有快捷,实用的复数运算分析软件已成为当前的主流趋势2。利用MATLAB GUI的开发设计思想和总体结构,结合复数运算及积分变换的特点,采用 MATLAB语言运行于WINDOWS操作系统产生图形界面。从而到达操作简单,图形界面直观,运行稳定,计算准确。在本设计中,将算法做了一些改进,提高了计算速度,各个类的有效封装又使程序具有很好的模块性.可维护性和可重用性1。2. MATLAB的发展和介绍2.1 MTALAB的发展、介绍 MATLAB是矩阵实验室(Matrix Laboratory)的简称。20世纪70年代,美国新墨西哥大学计算机科学系主任Cleve Moler为了减轻

9、学生编程的负担,用FORTRAN编写了最早的MATLAB。1984年由Little、Moler、Steve Bangert合作成立了的MathWorks公司正式把MATLAB推向市场,并且很快得到业内人士的认可和推崇,到了20世纪90年代,MATLAB已成为国际控制界的标准计算软件。MATLAB擅长于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视

10、窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域,代表了当今国际科学计算软件的先进水平。由此可见,它在数学类科技应用软件中在数值计算方面首屈一指2。2.2 MATLAB的优点MATLAB由一系列工具组成,这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。包括

11、MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。 2.2.1简单易用的程序语言 MATLAB是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在

12、命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。新版本的MATLAB语言是基于最为流行的C+语言基础上的,因此语法特征与C+语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。2.2.2强大的科学计算机数据处理能力 MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果

13、,而前经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如C和C+ 。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。2.2.3出色的图形处理功能 MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出 来,并且

14、可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘图。新版本的MATLAB对整个图形处理功能 、作了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等),MATLAB同样表现了出色的处理能力。同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求1。2.2.4应用广泛的模块集合工具箱 MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。

15、一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。2.2.5实用的程序接口和发布平台 新版本的MATLAB可以利用MAT

16、LAB编译器和C/C+数学库和图形库,将自己的MATLAB程序自动转换为独立于MATLAB运行的C和C+代码。允许用户编写可以和MATLAB进行交互的C或C+语言程序。另外,MATLAB网页服务程序还容许在Web应用中使用自己的MATLAB数学和图形程序。MATLAB的一个重要特色就是具有一套程序扩展系统和一组称之为工具箱的特殊应用子程序。工具箱是MATLAB函数的子程序库,每一个工具箱都是为某一类学科专业和应用而定制的,主要包括信号处理、控制系统、神经网络、模糊逻辑、小波分析和系统仿真等方面的应用3。3. 需求分析和总体设计3.1 需求分析最主要的功能需求为:(1)方便各种复数运算和积分变换

17、在一定的规则下,能够对各种复变函数函数进行运算以及积分变换,并直观地显示; (2) 复数的四则运算 在现实情况下,进行两个复杂复数的四则运算; (3)数据输入和结果输出的动态实现过程运用GUI窗口,在计算机上展示运算输入和结果。同时在性能需求上,要求选择合适的求解复变函数算法,使得求解效率尽可能的高,又能保证程序的健壮性。3.2 总体设计系统结构如图1所示,主要由三个模块组成:主程序复数四则运算留数泰勒级数傅里叶变换傅里叶反变换拉普拉斯变换拉普拉斯反变换加法减法乘法除法图1-1 系统功能图3.3 算法说明3.3.1 复数的四则运算复数的四则运算包括加(ADD)、减(SUB)、乘(MUL)、除(

18、DIV),基于复数四则运算法则,我们可以设计出复数的四则算法6。3.3.2 函数的留数 留数是复变函数论中重要的概念之一,它与解析函数在孤立奇点处的洛朗展开式、柯西复合闭路定理等都有密切的关系。 函数留数的概念:设z0是解析函数f(z)的孤立奇点,我们把f(z)在z0处的洛朗展开式中付一次幂的系数C-1称为f(z)在z0处的留数;记作Resf(z),z0,即 3.3.3 函数的泰勒级数泰勒展开式的概念:设函数f(z)在区域D内解析,z0为D内的一点,R为z0到D的边界上各点的最短距离,则当|z-z0|R时,f(z)可展为幂级数 其中,n=0,1,23.3.4 傅里叶变换及傅里叶反变换 1804

19、年,傅里叶首次提出“在有限区间上由任意图形定义的任意函数都可以表示为单纯的正弦与余弦之和”5,随之,1829年,法国数学家狄利克雷(Dirichlet)证明了下面的定理: 设是以T为周期的实值函数,且在,上满足狄利克雷条件(简称狄氏条件),即在,上满足(1)连续或只有有限个第一类间断点(2 ) 只有有限个极值点则在的连续处有=+, (1.1)其中(n=0,1, 2,)(n=0,1, 2,)我们称(1.1)式为傅里叶级数的三角函数形式又有 , (1.2) (n=0, 1, 2),我们称(1.2)式为傅里叶级数的复指数形式。当f(t)满足傅里叶积分定理条件时,f(t)满足 (1.3)其中F()叫做

20、f(t)的象函数,f(t)叫做F()的象原函数。我们称(1.3)为傅里叶反变换。3.3.5 拉普拉斯变换及拉普拉斯逆变换设函数f(t)是定义在0, +)上的实值函数,如果对于复数,积分 在复平面s的某一域内收敛,则称F(s)为f(t)的拉普拉斯变换(简称拉式变换),记为F(s)= ;相应的,称f(t)为F(s)的拉普拉斯反变换(简称拉式逆变换),记为f(t)= 。有时我们也称f(t)与F(s)分别为像原函数和像函数6。3.3.6 微分设函数y = f(x)在x0的邻域内有定义,x0及x0+ x在此区间内。如果函数的增量y = f(x0 + x) f(x0)可表示为 y = Ax + o(x)(

21、其中A是不依赖于x的常数),而o(x0)是比x高阶的无穷小,那么称函数f(x)在点x0是可微的,且Ax称作函数在点x0相应于自变量增量x的微分,记作dy,即dy = Ax。函数的微分是函数增量的主要部分,且是x的线性函数,故说函数的微分是函数增量的线性主部(X0)。通常把自变量x的增量 x称为自变量的微分,记作dx,即dx = x。于是函数y = f(x)的微分又可记作dy = f(x)dx。函数的微分与自变量的微分之商等于该函数的导数。因此,导数也叫做微商6。3.3.7 积分设函数f(x)在a,b上有界,在a,b中任意插入若干个分点a=x0x1.xn-1选中“New”选中“GUI”后,直接生

22、成图形界面,再进行各种操作。第二种: 打开MATLAB程序后,在主界面的Command Windows窗口中输入“guide”即可。第三种: 打开MATLAB程序后,在主界面左上方的快捷栏中单击“guide”快捷键即可,截图如下:图4-2 快捷生成法截图4.3.2 M文件生成法(1) 新建一个M文件,并添加一定代码,代码如下:function varargout = shiyan(varargin)gui_Singleton = 1; %GUI窗口gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, .

23、gui_OpeningFcn, shiyan_OpeningFcn, . gui_OutputFcn, shiyan_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );if nargin & ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);end if nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);endfuncti

24、on shiyan_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject; guidata(hObject, handles); function varargout = shiyan_OutputFcn(hObject, eventdata, handles) varargout1 = handles.output;(2)直接运行程序就会生成一个GUI窗口;(3)在窗口中添加控件,并在程序中编写相关代码,依次实现各自的功能;(4)这样,一个完整的运算程序就编写完成了。5算法的实现5.1 设计界面以及

25、相关回调函数的生成鉴于设计的特殊性和实用性,本文采用的是直接生成法。搭建好一个GUI窗口后,根据整个程序的需求,先设计用户图形界面,布局好控件,再编写各种运算(即各个按钮)的回调函数(callback function)。界面设计截图如下:图5-1 设计图形界面5.2 运算界面设计的基本思路控件设置: 设计中共用到了动态文本编辑控件(Edit Text)共3个,分别是“请输入指定函数”、“数据1输入下方红色方框”、“数据2输入下方红色方框”;用到了静态文本编辑框(Static Text)共11个,分别是“函数表达式”、“数据1输入”、“数据2输入”、“数据类结果输出”、“r=”、“p=”、“k

26、=”、“留数的输出”、“极点的输出”、“常数的输出”、“字符类结果的输出”;用到了按钮(Push Button)共13个,分别是“还原”、“加法”、“减法”、“乘法”、“除法”、“留数”、“泰勒级数”、“傅里叶变换”、“傅里叶反变换”、“拉普拉斯变换”、“拉普拉斯反变换”、“积分”、“微分”。回调函数的生成:(1)打开GUI界面,在界面的左边是控件区。选择“Push Button”空间,单击鼠标左键,光标移至界面窗口,在点击鼠标左键。(2)光标移至生成的控件,单击鼠标右键,出现菜单栏,选择View CallbacksCallback,在根据提示保存到指定位置。(3)软件自动生成相应的M文件和.

27、fig文件。(4)选择M文件,在对应空间的回调函数下编写相应的执行功能,最后运行。5.3 图形界面的回调函数5.3.1 加法运算的回调函数 function add_Callback(hObject, eventdata, handles) %回调函数a=get(handles.edit1,String); b=get(handles.edit2,String); total=str2num(a)+str2num(b); c=num2str(total); set(handles.text7,String,c); t=(+); set(handles.text5,string,t);guida

28、ta(hObject,handles)5.3.2 减法运算的回调函数function sub_Callback(hObject, eventdata, handles)a=get(handles.edit1,String);b=get(handles.edit2,String);total=str2num(a)-str2num(b);c=num2str(total);set(handles.text7,String,c);t=(-);set(handles.text5,string,t);guidata(hObject,handles)5.3.3 乘法运算的回调函数function mul_C

29、allback(hObject, eventdata, handles)a=get(handles.edit1,String);b=get(handles.edit2,String);total=str2num(a)*str2num(b);c=num2str(total);set(handles.text7,String,c);t=(*);set(handles.text5,string,t);guidata(hObject,handles)5.3.4 除法运算的回调函数function div_Callback(hObject, eventdata, handles)a=get(handle

30、s.edit1,String);b=get(handles.edit2,String);total=str2num(a)/str2num(b);c=num2str(total);set(handles.text7,String,c);t=(/);set(handles.text5,string,t);guidata(hObject,handles)5.3.5 留数运算的回调函数function res_Callback(hObject, eventdata, handles)A=get(handles.edit1,String)B=get(handles.edit2,String)A=str2

31、num(A)B=str2num(B)r,p,k=residue(A,B)set(handles.text1,String,r)set(handles.text2,String,p)s=kset(handels.text3,String,s)guidata(hObject,handles)5.3.6 泰勒级数运算的回调函数function tay_Callback(hObject, eventdata, handles)syms x;f0=get(handles.edit1,String)z0=get(handles.edit2,String)v=sym(f0)u=sym(z0)c=taylor

32、(v,u)d=char(c);set(handles.text4,String,d);guidata(hObject, handles)5.3.7 傅里叶变换的回调函数function fou_Callback(hObject, eventdata, handles)syms a s t w xa=get(handles.edit1,String);f=sym(a)b=fourier(f)o=char(b)set(handles.text4,String,o);guidata(hObject, handles)5.3.8 傅里叶反变换的回调函数function ifou_Callback(hO

33、bject, eventdata, handles)syms t w v ua=get(handles.edit1,String);b=get(handles.edit2,String);f=sym(a);u=sym(b);o=ifourier(f,u)d=char(o)set(handles.text4,String,d);guidata(hObject, handles)5.3.9 拉普拉斯变换的回调函数function lap_Callback(hObject, eventdata, handles)syms a s t w xa=get(handles.edit1,String);b=

34、get(handles.edit2,String);f=sym(a);b=laplace(f)f=char(b);set(handles.text4,String,f);guidata(hObject,handles)5.3.10拉普拉斯反变换回调函数function ilap_Callback(hObject, eventdata, handles)syms s t w x ya=get(handles.edit1,String);f=sym(a);b=ilaplace(f);c=char(b);set(handles.text4,String,c);guidata(hObject, han

35、dles)5.3.11 微分运算的回调函数function pushbutton14_Callback(hObject, eventdata, handles)syms x;a=get(handles.edit1,String);f=sym(a);diff(f);b=diff(f);o=char(b);set(handles.text4,String,o);guidata(hObject, handles)5.3.12 积分运算回调函数function pushbutton13_Callback(hObject, eventdata, handles)syms x;a=get(handles.

36、edit1,String);f=sym(a);int(f);b=int(f);o=char(b);set(handles.text4,String,o);guidata(hObject, handles)参考文献1 陈光,毛涛涛,王正林,王珍.精通MATLAB GUI设计J.电子工业出版社.2008.2 陈静,段振辉.MATLAB在复变函数与积分变换课堂教学中的应用J.河南机电高等专科学校学报.2011.53 李秋生,王丽.工科复变函数与积分变换课程教学改革初探.J宜春学院学报.2008.024 贺凯.MATLAB在复变函数与积分变换中的应用J.沙洲职业工学院学报.2006:22-245 薛定

37、宇,陈阳东.高等应用数学问题的MATLAB求解(第二版)M.北京:清华大学出版社.2008.6 刘子瑞,梅家斌,复变函数与积分变换M.北京:科学出版社.2007.附录程序核心代码如下:function varargout = shiyan(varargin)% 生成文件名为“实验”.fig的M文件% 开始初始化,无编辑gui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, shiyan_OpeningFcn, . gui_OutputF

38、cn, shiyan_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );if nargin & ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);end if nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);end% 完成初始化,无编辑状态% 执行在“shiyan”被使可见前function shiyan_Opening

39、Fcn(hObject, eventdata, handles, varargin)handles.output = hObject;%更新句柄结构guidata(hObject, handles);function varargout = shiyan_OutputFcn(hObject, eventdata, handles) varargout1 = handles.output;function edit1_Callback(hObject, eventdata, handles) % 动态文本框1的申明function edit1_CreateFcn(hObject, eventdata, handles) % 动态文本框1的回调函数 if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction edit2_Callback(hObject, eventdata, handles) %

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 学术论文 > 毕业设计

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922