MATLAB程序应用大全ppt课件_第1页
MATLAB程序应用大全ppt课件_第2页
MATLAB程序应用大全ppt课件_第3页
MATLAB程序应用大全ppt课件_第4页
MATLAB程序应用大全ppt课件_第5页
已阅读5页,还剩355页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MATLAB程序设计与应用,第一篇基本概述1MATLAB小转与外观2初探MATLAB第二篇绘图功能3二维平面绘图4三维立体绘图5特殊图形6图像显示与读写7动画制作8句柄图形与GUI设计9GUIDE:GUI设计环境第三篇变量与数据结构10矩阵的处理与运算11字符与字符串12多维数组13单元数组14结构数组15稀疏矩阵,第四篇程序设计16MATLAB的运算符17M文件18程序流程控制19程序调试20文件输出及输入21程序计时22程序代码与内存的优化23应用程序接口第五篇数值运算与其它应用24线性代数25多项式的处理与分析26一般数学函数的处理与分析27内插方法28曲线拟合与回归分析29常微分方程30GUI应用举例31数据与函数的可视化,1MATLAB小转与外观,1.1MATLAB小转1.2MATLAB第五版外观1.3MATLAB第六版外观本章介绍MATLAB与MathWorks公司的背景和历史,并说明MATLAB第五版和第六版的外观。,1.1MATLAB小转,MATLAB是由MathWorks软件公司于1984年推出的数学软件。其名称是由矩阵实验室(MATrixLABoratory)合成的。由此可知最早的开发理念是提供一套完善的矩阵计算命令。但是,随着数值运算需求的发展,MATLAB已经成为各种系统仿真、科学计算可视化为一体的交互式软件系统。MATLAB虽然在1984年首次推出商业版,但其前身早在1978年就已出现。作者是任教于美国新墨西哥大学的CleveMoler教授。事实上MATLAB的许多核心计算技术来源于LINPACK和EISPACK。这是两个美国国科会计划所开发的数值计算软件。CleveMoler教授也是计划负责人之一。虽然CleveMoler教授是MATLAB的原作者,但是第一个将MATLAB商品化的人不是他,而是JackLittle,他在Stanford大学主修控制,当他接触到MATLAB时,直觉告诉他这是一个潜力很大的软件。因此,他在毕业后没有多久,既决定将MATLAB用C语言重写,并于1984年成立MathWorks软件公司,首次推出MATLAB商用版。,1.1MATLAB小转,MathWorks虽然已经是超过500人的大公司,但是至今还是私人企业,没有上市。这与JackLittle的个人理念有关,他认为MATLAB的发展方向应该与顾客的需求与软件的完整性为首要目标,而不是以获利为主。因此MATLAB一直在稳定中求进步。由于JackLittle保守的个性,也使MathWorks不涉及MATLAB和SimuLink以外的事业。MATLAB早期以矩阵运算为主(第1,2,3版)。但随着科学计算可视化需求的日增,MATLAB第4版推出句柄图形,这是一个里程碑。另一个里程碑则是MATLAB第5版,允许用户建立自己的数据类型,而不再只是局限于二维的矩阵。MATLAB语言比较好学,它的语法规则简单,更适合于专业科技人员的思维方式和书写习惯。它用解释方式工作,因此更加简洁和智能化,人机交互性能好。,1.1MATLAB小转,MATLAB是一个计算核心,围绕这个核心,有许多针对不同应用所开发的应用程序,称为工具箱(ToolBoxes)例如ControlToolBox,SignalprocessingToolBox,WaveletToolBox,OptimizationToolBox,SplineToolBox,SymbolicToolBox。工具箱实际上是用MATLAB的基本语句编写成的程序的集合,用以解决某一方面的专门问题。任何人都可以自己生成工具箱,因此,很多研究成果被直接做成MATLAB的工具箱直接发布。在互联网上有大量的免费的MATLAB工具箱可以使用。除了MATLAB以外,MathWorks还有两项主要产品SimuLink和Stateflow。SimuLink用于连续和离散时间的动态系统仿真。Stateflow用于仿真有限状态机(FiniteStateMachines)和事件驱动系统(Event-drivenSystems)。,1.2MATLAB第五版外观,进入MATLAB第五版界面后,可以看到标准的下拉式菜单(Pull-downMenu),File,Edit,Window,Help。其中File|Preference是比较重要的。使用这个界面,可以设置MATLAB的数值显示方式、文本编辑器、命令窗口的字体和背景、拷贝图形的选项等。MATLAB主界面中还有其它窗口,其中四个是直接和MATLAB的操作相关。工作空间浏览器(WorkspaceBrowser)当前目录浏览器(CurrentDirectoryBrowser)SIMULINK库浏览器(SIMULINKLibraryBrowser)在线帮助(On-lineHelp),1.2MATLAB第五版外观,工作空间浏览器:MATLAB用来储存变量的空间,称为工作空间。工作空间浏览器用来浏览工作空间中的变量,包括其名称、数据类型、字节大小等。路径浏览器:MATLAB在执行每个命令时,会根据一个搜寻路径寻找命令的位置。路径浏览器的功能是对搜寻路径进行修改。SIMULINK库浏览器:SIMULINK是一个仿真工具,它不是MATLAB的一个部分,所有如果您没有安装SIMULINK,就不会有此图标。在线帮助:此图标打开MATLAB的在线帮助窗口,您可以一路单击所要的类别或命令,直到得到所需要的帮助信息。,1.3MATLAB第六版外观,MATLAB第六版中有更多的窗口,可以有用View菜单控制它们,这些窗口分别是View|CommandWindow命令窗口View|CommandHistory命令历史窗口View|HelpBrowser在线帮助浏览器View|WorkspaceBrowser工作空间浏览器View|LaunchPad交互界面分类目录窗口View|Profiler程序性能解析窗口,1.3MATLAB第六版外观,1.CommandWindow命令窗口是MATLAB操作最主要的窗口。在这个窗口中可以键入各种MATLAB的命令、函数、表达式,并显示除图形以外的所有结果。命令窗口的每一行前有提示符。命令窗口内显示的字符和数值采用不同的颜色。输入的命令、表达式和计算结果采用黑色字体,字符串用红色,if,for等关键词采用蓝色。MATLAB把命令窗口中输入的命令都记录在CommandHistory中,因此MATLAB的命令窗口不仅可以对输入的命令编辑和运行,而且可以对已输入的命令进行回调、编辑、重新运行。2.CommandHistory历史命令窗口出现在MATLAB界面的左下方,用来记录并显示已运行的命令、函数、表达式,并允许用户对它们进行选择、复制和重运行。用户可以方便地输入和修改长命令,选择多行命令产生M文件。,1.3MATLAB第六版外观,3.CurrentDirectoryBrowser当前目录浏览器窗口默认地出现在MATLAB界面左上方后台,用来设置当前目录,可以随时显示当前目录下的MATLAB文件的信息,包括文件名、文件类型、最后修改时间和文件说明等。并可以复制、编辑和运行M文件,以及加载MAT类型的数据文件。4.WorkspaceBrowser工作空间浏览器窗口在MATLAB界面左上方后台,用来显示MATLAB工作空间中的变量名、数据结构、类型、大小和在内存中的字节数。在该窗口中,还可以对工作空间中的变量进行观察、编辑、提取和保存。,1.3MATLAB第六版外观,5.ArrayEditor在默认情况下,数组编辑窗口不随MATLAB界面出现,只有在工作空间窗口中选择数值、字符变量,单击鼠标右键出现选单,选择Open或双击该变量时才会出现数组编辑器窗口,并且相应的变量会出现在窗口中。用户可以直接在数组编辑器窗口中修改打开的数组,甚至可以更改数据结构和显示方式。6.LaunchPad交互界面分类目录窗口不随MATLAB界面出现,可以从MATLAB菜单View中打开,在这个窗口中,以展开的树状结构显示当前安装的MATLAB交互界面,便于用户迅速查阅。7.Editor/Debugger在默认情况下,M文件编辑、调试窗口不随MATLAB启动出现。只有需要编写M文件时,才启动该窗口,可以编辑M文件,对M文件进行交互式调试。,1.3MATLAB第六版外观,8.HelpNavigator/Browser帮助导航、浏览器窗口在默认情况下不随MATLAM启动出现,当单击工具栏上的?图标,或选择View-Help时出现。主要作用是显示MATLAB的帮助信息。9.Profiler程序性能解析窗口用来对MATLAB中各命令的耗时进行分析,是MATLAB6.5新增的窗口,选择View-Profiler或在命令窗口中输入ProfileViewer命令都可激活这个窗口。,2初探MATLAB,2.1使用变量与基本运算2.5M文件2.2向量与矩阵的处理2.6搜索路径2.3常用数学函数2.7工作空间与变量2.4程序流程控制本章介绍MATLAB的基本环境和操作,如果您是MATLAB的初学者,建议您先熟悉本章各节的内容,能够帮助您很快进入状态。当然,如果您是MATLAB老手,可以直接跳到后面各章节。,2.1使用变量与基本运算,基本运算在CommandWindow下进行。基本运算符号+-*/(5*2+3.5)/5ans=2.7000%其中ans是存计算结果的默认变量x=32x=32;%表达式式后加;表示结果不在屏幕上显示x=5*sin(pi/3),y=cos(pi/2)%在一行中的多条语句用,或;隔开x=5*sin(pi/3)+cos(pi/4).+exp(2)%如果一个语句过长,可以用.将其延伸到下一行MATLAB变量名第一个字符必须是英文字母,字母间不能有空格,最多只能有31各字母或数字。变量不需要预先声明,变量以默认的double数据类型保存。,2.2向量与矩阵的处理,MATLAB的特色在于可以方便的使用向量和矩阵进行存储和运算,用到,;():1、矩阵的表示A=12;34或A=1,2;3,4B=123或B=1,2,3%行向量C=1;2;3%列向量行向量看作只有一行的矩阵,列向量看作只有一列的矩阵。,2、矩阵的处理A=123;456;789输入一个33的矩阵A=123456789对矩阵中的单个元素处理,A(1,2)=5表示将矩阵A中第1行,第2列的元素改为5。B=A(2,1:3)%取出A的第2行的元素B=456,2.2向量与矩阵的处理,A;11%在A中加入第4行ans=13467911%取出矩阵的一部分形成一个新矩阵B=A(1:2,1:2)B=1245,A(1,:)=%删除A的第1行:表示所有行A=%表示空矩阵456789A(:,13)=%删除A的第1,3列A=58A=A,B%将B合并到A中A=512845,2.3常用的数学函数,MATLAB是一个科学计算软件,所以它支持很多数学函数abs(-4)ans=4sin(pi/4)ans=0.7071exp(2)ans=7.3891log(2)ans=0.6931log10(2)ans=0.3010,MATLAB也支持复数运算,用i或j表示单位虚数z=5+6jz=5.0000+6.0000ireal(z)ans=5imag(z)ans=6angle(z)ans=0.8761conj(z)ans=5.0000-6.0000i,2.3常用的数学函数,这些基本的数学函数,也可以用于向量或矩阵,例如x=42j9sqrt(x)ans=2.00001.0000+1.0000i3.0000log(x)ans=1.38630.6931+1.5708i2.1972y=123;456;sin(y)ans=0.84150.90930.1411-0.7568-0.9589-0.2794,还有一些函数是专门对向量设计的,例如a=12309;min(a)ans=0max(a)ans=9mean(a)ans=3sum(a)ans=15sort(a)ans=01239,2.3常用的数学函数,Trigonometricsin-Sine.sinh-Hyperbolicsine.asin-Inversesine.asinh-Inversehyperbolicsine.cos-Cosine.cosh-Hyperboliccosine.acos-Inversecosine.acosh-Inversehyperboliccosine.tan-Tangent.tanh-Hyperbolictangent.atan-Inversetangent.atan2-Fourquadrantinversetangent.,atanh-Inversehyperbolictangent.sec-Secant.sech-Hyperbolicsecant.asec-Inversesecant.asech-Inversehyperbolicsecant.csc-Cosecant.csch-Hyperboliccosecant.acsc-Inversecosecant.acsch-Inversehyperboliccosecant.cot-Cotangent.coth-Hyperboliccotangent.acot-Inversecotangent.acoth-Inversehyperboliccotangent.,2.3常用的数学函数,Exponentialexp-Exponential.log-Naturallogarithm.log10-Common(base10)logarithm.log2-Base2logarithmanddissectfloatingpointnumber.pow2-Base2powerandscalefloatingpointnumber.realpow-Powerthatwillerroroutoncomplexresult.reallog-Naturallogarithmofrealnumber.realsqrt-Squarerootofnumbergreaterthanorequaltozero.sqrt-Squareroot.,Complexabs-Absolutevalue.angle-Pplex-Constructcomplexdatafromrealandimaginaryparts.conj-Complexconjugate.imag-Compleximaginarypart.real-Complexrealpart.unwrap-Unwrapphaseangle.isreal-Trueforrealarray.cplxpair-Sortnumbersintocomplexconjugatepairs.,2.3常用的数学函数,Elementarymatriceszeros-Zerosarray.ones-Onesarray.eye-Identitymatrix.repmat-Replicateandtilearray.rand-Uniformlydistributedrandomnumbers.randn-Normallydistributedrandomnumbers.linspace-Linearlyspacedvector.logspace-Logarithmicallyspacedvector.freqspace-Frequencyspacingforfrequencyresponse.meshgrid-XandYarraysfor3-Dplots.,Basicarrayinformationsize-Sizeofarray.length-Lengthofvector.ndims-Numberofdimensions.numel-Numberofelements.disp-Displaymatrixortext.isempty-Trueforemptyarray.isequal-Trueifarraysarenumericallyequal.isnumeric-Truefornumericarrays.islogical-Trueforlogicalarray.logical-Convertnumericvaluestological.,2.3常用的数学函数,MATLAB的在线帮助help用来查询已知命令(函数)的用法,例如,已知inv是用来求逆矩阵的命令,输入helpinv就可以得到有关inv命令的用法。lookfor用来寻找未知的命令,例如,输入lookforinverse,MATLAB会列出所有关键词与inverse相关的命令,找到所需要的命令后,可以用help进一步得到其用法。lookfor实际上是对所有搜索目录下的M文件进行关键词和第一行注释的对比。helpwin产生在线帮助窗口,与MATLAB窗口工具栏中的?按钮一样。helpdesk产生HTML方式的在线帮助,包含各种pdf格式的使用手册。doc产生特定函数的HTML形式的在线帮助,例如,doceig。,2.4程序流程控制,MATLAB提供了循环流程控制的语句,最简单的循环流程控制语句是for-end语句,用法是for变量=向量,表达式,end执行时,变量被依次设定为向量的每个元素的值,然后执行表达式。fork=1:4,x(k)=1/k,end另外一个常用的循环流程控制的语句是while-end语句while条件式,表达式,endx=1;whilex0,y=1,elsey=2,end如果条件成立,则执行表达式1,否则,执行表达式2。有关程序流程控制在第18章中将做更详细的介绍。,2.5M文件,要一次执行多条MATLAB语句,可以将这些语句存放在一个扩展名为M的文件中,并在MATLAB的命令窗口下输入此文件的主文件名即可。因为这些文件都以M为扩展名,所以通称为M文件。M文件是纯文本文件,可以用任何一种纯文本编辑软件进行编辑,例如:Windows附件中的“记事本”。MATLAB中也提供了M文件的编辑软件。一般来说,不要用WORD一类的文本编辑软件来写M文件,因为这类软件中有隐含的控制符,MATLAB不认识这些符号。M文件可分为脚本(Scripts)和函数(Functions)两种。脚本的执行与和将个别MATLAB语句在命令窗口中执行是一样的。可以直接使用工作空间(WorkSpace)中的已有的变量,脚本中的变量在工作空间中也可以看到。(全局变量)函数则要依靠输入变量(InputArguments)和输出变量(OutputArguments)来传递信息。函数中的变量只在本函数中可以看到。(局部变量),2.6搜索路径,每次MATLAB遇到一个命令时(例如aa),会按照一定的搜索路径(文件夹)进行搜索,搜索的顺序是1、检查aa是否为MATLAB工作空间中的变量。若是,则取用。2、若不是,检查aa是否为永久常数,若是,则取用。3、若不是,检查aa是否为当前工作目录中的M文件,若是,则取用。4、若不是,检查aa是否为搜索路径下的M文件,若是,则取用。5、若不是,MATLAB发出错误信息。Undefinedfunctionorvariableaa.,2.6搜索路径,有两种方法可以使MATLAB启动后,加载用户定义的搜索路径。1.MATLAB默认的搜索路径在文件matlabrc.m中定义,MATLAB启动时会自动执行此文件。因此,用户可以直接修改这个文件,添加新的目录(文件夹)到这个文件的搜索路径中。2.MATLAB在执行matlabrc.m的同时,也会在默认的搜索路径中寻找startup.m文件,如果存在,则执行所包含的命令。因此,可以将MATLAB启动时所需要执行的命令,包括更改搜索路径的命令放在这个文件中。在MATLAB的执行过程中,可以用路径浏览器修改搜索路径。有两种方法可以得到MATLAB的路径浏览器窗口,一是在命令窗口中输入pathtool命令,二是在MATLAB菜单中选File-setpah选项。,2.7工作空间与变量,MATLAB运行时,将已定义的变量储存在计算机内存中,这些存储变量的内存称为工作空间(BaseWorkSpace)。当运行某一函数时,进入该函数的临时工作空间,临时工作空间与工作空间是不同的,在临时工作空间内的变量改变不影响工作空间中的变量值。当函数运行结束时,MATLAB清除临时工作空间(删除临时工作空间中所有的变量),回到MATLAB的工作空间。与工作空间有关的主要命令Who查看工作空间中的变量Whos查看工作空间中的变量的详细信息Clearx清除工作空间中的变量xClearall清除工作空间中的所有变量,2.7工作空间与变量,为了方便用户,MATLAB中定义了永久常数(PermanentConstants),这些永久常数在查看工作空间时看不到,但使用者可以直接取用。MATLAB中的永久常数有i或j基本虚数单位eps系统的浮点精确度Inf无限大,例如1/0nan或NaN不确定数,例如0/0pi圆周率(3.14159)realmax系统所能表示的最大数realmin系统所能表示的最小数nargin函数的输入变量个数nargout函数的输出变量个数,2.7工作空间与变量,有时我们希望将本次计算的结果保留,以便下一次使用。MATLAB提供了存储和加载工作空间中变量的命令。save将工作空间中所有变量保存到matlab.mat文件中。Savefilename将工作空间中所有变量保存到filename.mat文件中。Savefilenamex,y将工作空间中变量x,y保存到filename.mat文件中。Loadfilename将filename.mat文件中所有变量加栽到工作空间中。MATLAB还提供了更多的文件输入/输出方式,详见第20章。,3二维平面绘图,3.1基本二维绘图命令3.2图形的控制3.3图轴(坐标轴)的控制3.4加入文字说明MATLAB不但擅长于与矩阵相关的各种数值运算,也有非常强大的绘图功能,特别适合于各种科学计算的可视化(ScientificVisualization)。本章将介绍MATLAB的基本二维(平面)绘图功能,其它更高级的绘图功能,将在后续各章中陆续介绍。,3.1基本二维绘图命令,MATLAB中的plot是最基本的绘图命令,plot是一个功能强大的函数。下面我们通过一些实例说明它的用法。例3.1x=0:0.2:2*pi;%在0到2之间以0.2为步长取点y=sin(x);%计算所取点的函数值plot(x,y)%进行二维平面绘图例3.2x=0:0.2:2*pi;%在0到2之间以0.2为步长取点plot(x,sin(x),x,cos(x);%进行二维平面多曲线绘图,3.1基本二维绘图命令,用plot函数可以对矩阵变量绘图。如果只给定一个矩阵y,plot(y)可以对y的每个列向量(ColumnVector)绘图。例3.3(plot函数对一个矩阵绘图)y=123;456;789;plot(y);如果x,y都是矩阵,plot(x,y)将会取y的每个列向量和对应的x的行向量绘图。例3.4(plot函数对一个向量和一个矩阵绘图)x=123;y=111;222;333;plot(x,y);例3.5(plot函数对两个矩阵绘图)x=123;456;789;y=111;222;333;plot(x,y);注意:x可以是一行,也可以是多行,多行时x的列数必须与y的行数相等。,3.2图形的控制,用plot函数绘图时可以控制图形的颜色和标记。例3.6(颜色控制)x=0:0.2:2*pi;%在0到2之间以0.2为步长取点plot(x,sin(x),r,x,cos(x),y);%进行二维平面多曲线绘图此例中,绘出两条曲线图,第一条曲线是红色,第二条曲线是黄色。例3.7(标记控制)x=0:0.2:2*pi;%在0到2之间以0.2为步长取点plot(x,sin(x),o,x,cos(x),+);%进行二维平面多曲线绘图此例中,绘出两条曲线图,第一条曲线以“o”为标记,第二条曲线以“+”为标记。,3.2图形的控制,例3.8(同时控制颜色和标记)x=0:0.2:2*pi;%在0到2之间以0.2为步长取点plot(x,sin(x),r+,x,cos(x),yo);%进行二维平面多曲线绘图此例中,绘出两条曲线图,第一条曲线是红色,以“+”为标记,第二条曲线是黄色,以“o”为标记。例3.9(曲线类型的控制)x=0:0.2:2*pi;%在0到2之间以0.2为步长取点plot(x,sin(x),r,x,cos(x),b-);%进行二维平面多曲线绘图此例中,绘出两条曲线图,第一条曲线是红色实线,第二条曲线是蓝色虚线。,3.2图形的控制,用plot函数绘图时图形的颜色选项表plot()中的参数图形的颜色RGB值B蓝色(Blue)0,0,1C青色(Cyan)0,1,1G绿色(Green)0,1,0K黑色(Black)0,0,0M紫色(Magenta)1,0,1R红色(Red)1,0,0W白色(White)1,1,1Y黄色(Yellow)1,1,0说明:可以直接用RGB值控制图形的颜色。,3.2图形的控制,曲线格式表plot()中参数曲线格式-实线(默认)-虚线:点线-.点划线在不同的MATLAB版本中支持的曲线格式可能不尽相同。高的版本支持更多的曲线格式。,曲线标记符号表plot()中参数曲线标记o圆形+加号x叉号*星号.点号在不同的MATLAB版本中支持的曲线标记可能不尽相同。高的版本支持更多的曲线标记。,3.3图轴(坐标轴)的控制,plot可以根据图形自动调整坐标的范围和坐标的标记。如果有特殊需要,用户也可以根据自己的需要指定这些参数。其基本命令和语法是axis(xmin,xmax,ymin,ymax)%指定坐标范围set(gca,ytick,01234)%指定y轴的标记holdon(off)%保持(不保持)当前图形gridon(off)%打开(关闭)网格线boxon(off)%画出(取消)图形外围的长方形subplot(n,m,p)%在一个窗口画多个图形说明:图轴的颜色和图形窗口的背景色可以用set()函数自由设置。,3.4加入文字说明,例3.10(在一个窗口画多个图形)x=0:0.2:2*pisubplot(2,2,1);plot(x,sin(x);subplot(2,2,2);plot(x,cos(x);subplot(2,2,3);plot(x,sin(2*x);subplot(2,2,4);plot(x,cos(2*x);例3.11(文字说明)x=0:0.2:2*pi;y1=sin(x);y2=cos(x);plot(x,y1,r,x,y2,g);xlabel(t=0to2*pi);ylabel(valueofsin(t)andcos(t);title(示意图);legend(sin(t),cos(t);,命令功能title图形的标题xlabelx轴的说明ylabely轴的说明zlabelz轴的说明legend多条曲线的说明text在图形中加入文字gtext用鼠标确定文字的位置,4三维立体绘图,4.1基本三维绘图命令4.2立体图形和图轴的基本技巧4.3曲面颜色的控制4.3三维图形的注释在科学计算可视化(ScientificVisualization)中,三维空间的立体绘图是非常重要的技巧。本章将介绍三维空间的各种立体绘图命令。,4.1基本三维绘图命令,Mesh、surf和plot3是三维绘图的基本命令,mesh可以画出立体网状图,surf可以画出三维曲面图。plot3可以画出三维曲线图。例4.1(立体网状图)x=linspace(-2,2,25);%在x轴-2,2之间取25个点y=linspace(-2,2,25);%在y轴-2,2之间取25个点xx,yy=meshgrid(x,y);%xx,yy是2525的矩阵zz=xx.*exp(-xx.2-yy.2);%计算函数值,zz是2525的矩阵mesh(xx,yy,zz);%画出立体网状图colormap(cool);%以冷色呈现,4.1基本三维绘图命令,例4.2(三维曲面图)x=linspace(-2,2,25);%在x轴-2,2之间取25个点y=linspace(-2,2,25);%在y轴-2,2之间取25个点xx,yy=meshgrid(x,y);%xx,yy是2525的矩阵zz=xx.*exp(-xx.2-yy.2);%计算函数值,zz是2525的矩阵surf(xx,yy,zz);%画出三维曲面图colormap(hot);%以暖色呈现,4.1基本三维绘图命令,例4.3(三维曲线图)t=linspace(0,20*pi,501);%在0到20之间取501个点plot3(t.*sin(t),t.*cos(t),t);%画tsin(t),tcos(t),t的曲线例4.4(两条三维曲线图)t=linspace(0,20*pi,501);plot3(t.*sin(t),t.*cos(t),t,t.*sin(t),t.*cos(t),-t);例4.5(根据矩阵画三维曲线图)x,y=meshgrid(-2:0.1:2);%在2222区域上取网格点z=y.*exp(-x.2-y.2);%计算函数值plot3(x,y,z);%画三维曲线图,4.1基本三维绘图命令,MATLAB中的ezsurf命令可以使用户更灵活、方便地画出立体曲面图。ezsurf(f)plotsagraphoff(x,y)usingSURFwherefisastringorasymbolicexpressionrepresentingamathematicalfunctioninvolvingtwosymbolicvariables,sayxandy.Thefunctionfisplottedoverthedefaultdomain-2*pix2*pi,-2*piy2*pi.Thecomputationalgridischosenaccordingtotheamountofvariationthatoccurs.ezsurf(f,DOMAIN)plotsfoverthespecifiedDOMAINinsteadofthedefaultDOMAIN=-2*pi,2*pi,-2*pi,2*pi.TheDOMAINcanbethe4-by-1vectorxmin,xmax,ymin,ymaxorthe2-by-1vectora,b(toplotoveraxb,ayb).,4.1基本三维绘图命令,Iffisafunctionofthevariablesuandv(ratherthanxandy),thenthedomainendpointsumin,umax,vmin,andvmaxaresortedalphabetically.Thus,ezsurf(u2-v3,0,1,3,6)plotsu2-v3over0u1,3v6.ezsurf(x,y,z)plotstheparametricsurfacex=x(s,t),y=y(s,t),andz=z(s,t)overthesquare-2*pis2*piand-2*pit2*pi.ezsurf(x,y,z,smin,smax,tmin,tmax)orezsurf(x,y,z,a,b)usesthepecifieddomain.ezsurf(.,N)plotsfoverthedefaultdomainusinganN-by-Ngrid.ThedefaultvalueforNis60.ezsurf(.,circ)plotsfoveradiskcenteredonthedomain.,4.2立体图形和图轴的基本技巧,以on/off来切换的命令命令说明hidden隐藏(on)或显示(off)被遮盖的网线zoom允许(on)或取消(off)以鼠标单击放大图形rotate3d允许(on)或取消(off)以鼠标单击旋转图轴axis显示(on)或不显示(off)图轴box显示(on)或不显示(off)图轴的外框more允许(on)或不允许(off)命令窗口的输出暂停hold在绘制新图时,保留(on)或不保留(off)旧图,4.3曲面颜色的控制,colormap可以用来作曲面不同的颜色对比,MATLAB提供的颜色对照表如下命令说明colormaphsvHSV颜色对照表(默认值)colormaphot代表“热”的颜色对照表colormapcool代表“冷”的颜色对照表colormapgray代表“灰色”的颜色对照表colormapcopper代表“铜色”的颜色对照表colormapbone代表“X光片”的颜色对照表colormappink代表“粉红”的颜色对照表colormapflag代表“旗帜”的颜色对照表用colormapeditor命令可以编辑颜色对照表。,4.3曲面颜色的控制,alpha(a)设置图形的透明度,0a1colorbar用不同的颜色表示曲面的高度brighten(colormap,c)-1Azimuth,ElevationCameraproperties-Position,Target,Upvector,Viewangle这种动画方式本质上是对象不动,观察点在移动,因此,当使用照明模型时,要得到逼真的效果,必须保持观察点与照明点的相对位置不变。,7.3以对象方式产生动画,使用jpg和TrueColor格式的图像作为对象表面的纹理时,不能使设置对象的facealpha,和alphadata属性,也没有调色板。jpg格式的图像是目前用到最多的图像。MATLAB中提供了jpg图像的处理函数。例如有一个图像文件fish.jpg,使用以下命令可以将图像压缩。S=imread(fish.jpg),imwrite(S,fish2.jpg,Quality,N),其中N的取值范围是1-100,N越大表示质量越好,但文件也越大。imwrite命令还可以做各种不同格式文件之间的转换。IMWRITE(A,FILENAME,FMT)writestheimageAtoFILENAMEFILENAMEisastringthatspecifiesthenameoftheoutputfile,andFMTisastringthespecifiestheformatofthefile.Acanbeeitheragrayscaleimage(MxN)oratruecolorimage(MxNx3),详见MATLAB的在线帮助。MATLAB的图像处理工具箱(images)中提供了将jpg,TrueColor图像转换为索引图像的命令。S=imread(ditu.jpg),X,map=rgb2ind(S,N),S是TrueColor图像数据,n是调色板(Colormap)中颜色的数目,n越大,对颜色的复原越好。N一般取64就可以了,如果对图像质量要求较高,N可以取为265。X是索引图像的数据,map是索引图像的调色板数据。,8句柄图形与GUI设计,8.1句柄图形简介8.2以GUI进行图形对象的属性存取8.3以命令进行图形对象的属性存取8.4以M文件进行GUI设计8.5以M文件设定鼠标事件的回调命令本章介绍MATLAB的句柄图形(HandleGraphics),及相关的图形用户界面(GUI:GraphicUserInterface)设计。使用句柄图形和图形用户界面可以随心所欲改变MATLAB的图形,并能设计出友好、直观的界面。本章的GUI设计以基本的MATLAB程序为主。,8.1句柄图形简介,句柄图形的概念很简单,就是将每个图形的每个组件都作为一个对象,每个对象都有一个独一无二的句柄(Handle)。在句柄图形的结构中,每一个图形对象都属于一个层次结构中的某一类。一个Figure下面有三类对象UIcontrols(UI控件),UImenus(UI菜单)和Axis(坐标轴)。Axis下包含的对象有images(图像),lines(线段),patches(贴片),texts(文字),surface(曲面),lighting(照明)。每一个对象多有自己的属性,只要得到对象的句柄,就可以通过句柄对对象的属性进行查看、设置、编辑和修改。以产生不同的呈现效果。还可以定义不同的鼠标事件(MouseEvents)的回调命令(Callbacks),利用鼠标可以实现人与计算机的交互,完成特定的工作。,8.2以GUI进行图形对象属性的存取,每一个句柄图形对象都有一系列的“属性”(Properties)和相对应的“值”(Values)可以用propedit命令改变图形对象的属性。举例来说,先产生一个简单的图形t=0.1:0.1:4*pi;y=sin(t).*exp(-5./t);plot(t,y);要对此图形编辑,可以使用propedit(gcf),得到一个图形编辑窗口,分为对象浏览区,属性修改区,属性陈列区。或者用鼠标右键单击图形,在快捷菜单中选properties也可以打开图形编辑窗口。,8.3以命令行进行图形对象属性的存取,也可以使用命令行方式对图形属性进行修改,最常用到的命令是set和get命令。set命令用来设置某个属性的值,get命令用来得到某个属性的值t=0:0.1:4*pi;y=sin(t).*exp(-5/t);h=plot(t,y);set(h,linewidth,3);%将曲线的宽度改为3set(h,marker,o);%将曲线的标志改为o以上两个命令可以合成一条语句set(h,linewidth,3,marker,o);单独使用set(h),可以列出h的所有选项和默认值。,8.3以命令行进行图形对象属性的存取,若要查看句柄h所代表对象的所有属性的当前值,可以使用get(h)命令。另一个常用的命令是findobj,该命令可在图形的层次结构中找出您所要的对象h=plot(rand(10,2);%画两条随机曲线h1=findobj(h,type,line)%得到曲线的句柄h1=1.005174.0016set(h1,linewidth,3);%由句柄将曲线的线宽改为3,8.4以M文件进行GUI设计,用户界面(或接口)是指:人与机器(或程序)之间交互作用的工具和方法。如键盘、鼠标、跟踪球、话筒都可成为与计算机交换信息的接口。图形用户界面(GraphicalUserInterfaces,GUI)则是由窗口、光标、按键、菜单、文字说明等对象(Objects)构成的一个用户界面。用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。MATLAB为表现其基本功能而设计的演示程序demo是使用图形界面的最好范例。MATLAB的用户,在指令窗中运行demo打开那图形界面后,只要用鼠标进行选择和点击,就可浏览那丰富多彩的内容。用户界面设计原则是简单性、一致性、习常性及其它考虑因素。,8.4以M文件进行GUI设计,【例8.4-1】MATLAB的uicontrol命令是产生GUI的主要命令,以下是产生一个按钮(PushButton)的最简单的例子h=uicontrol;%产生一个按钮set(h,string,Pushme!)%在按钮上加文字说明set(h,callback,sphere);%设置按钮的回调命令执行完毕后,MATLAB会产生一个空白窗口,窗口上有一个按钮,单击这个按钮后,在窗口中画一个球体。要得到当前GUI中对象的句柄,可以使用下面一组命令gcf取得当前窗口的句柄gca取得当前图轴的句柄gco取得当前对象的句柄gcbf取得发出回调命令的窗口的句柄gcbo取得当发出回调命令的对象的句柄,8.4以M文件进行GUI设计,【例8.4-2】本例说明:如何隐藏和恢复标准菜单的显示。H_fig=figureset(H_fig,Menubar,none)set(gcf,menubar,menubar);set(gcf,menubar,figure);本例演示:如何自制一个带下拉菜单表的用户菜单figureh=uimenu(gcf,label,Color);h1=uimenu(h,label,Blue,callback,set(gcf,Color,blue);h2=uimenu(h,label,Red,callback,set(gcf,Color,red);,8.4以M文件进行GUI设计,【例8.4-3】本例说明设置简捷键或快捷键.Color菜单项及其下拉的Blue菜单各带一个简捷键,而另一项下拉菜单Red带一个快捷键。figureh=uimenu(gcf,Label,8.4以M文件进行GUI设计,【例8.4-4】本例演示:()把用户菜单Option设置为顶层的第菜单项;()下拉菜单被两条分隔线分为三个菜单区;()最下菜单项又有两个子菜单组成。figureBackColor=get(gcf,Color);h=uimenu(label,Option,Position,3);h1=uimenu(h,label,gridon,callback,gridon);h2=uimenu(h,label,gridoff,callback,gridoff);h3=uimenu(h,label,boxon,callback,boxon,separator,on);h4=uimenu(h,label,boxoff,callback,boxoff);h5=uimen

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论