《MATLAB基础》PPT课件

上传人:博****1 文档编号:578314110 上传时间:2024-08-23 格式:PPT 页数:98 大小:972.50KB
返回 下载 相关 举报
《MATLAB基础》PPT课件_第1页
第1页 / 共98页
《MATLAB基础》PPT课件_第2页
第2页 / 共98页
《MATLAB基础》PPT课件_第3页
第3页 / 共98页
《MATLAB基础》PPT课件_第4页
第4页 / 共98页
《MATLAB基础》PPT课件_第5页
第5页 / 共98页
点击查看更多>>
资源描述

《《MATLAB基础》PPT课件》由会员分享,可在线阅读,更多相关《《MATLAB基础》PPT课件(98页珍藏版)》请在金锄头文库上搜索。

1、MATLAB基础及控制系统辅助设计武汉大学动机学院 2007.41 第一部分第一部分第一部分第一部分 MATLAB MATLAB 基础及其基本应用基础及其基本应用基础及其基本应用基础及其基本应用 第二部分第二部分第二部分第二部分 模糊控制系统设计模糊控制系统设计模糊控制系统设计模糊控制系统设计模糊逻辑工具箱应用模糊逻辑工具箱应用模糊逻辑工具箱应用模糊逻辑工具箱应用uu模糊逻辑控制系统特点模糊逻辑控制系统特点模糊逻辑控制系统特点模糊逻辑控制系统特点uu模糊逻辑控制系统基本结构原理模糊逻辑控制系统基本结构原理模糊逻辑控制系统基本结构原理模糊逻辑控制系统基本结构原理uu使用使用使用使用GUIGUI工

2、具建立工具建立工具建立工具建立FISFIS系统系统系统系统uu与与与与SimulinkSimulink一起工作一起工作一起工作一起工作uu MATLAB MATLAB 基础基础基础基础uu MATLAB MATLAB的程序设计的程序设计的程序设计的程序设计uu MATLAB MATLAB控制系统工具箱及其应用控制系统工具箱及其应用控制系统工具箱及其应用控制系统工具箱及其应用uu SIMULINK SIMULINK与水轮机调节系统的仿真与水轮机调节系统的仿真与水轮机调节系统的仿真与水轮机调节系统的仿真 本部分讨论MATLAB的基本知识及用于控制系统仿真和简单辅助分析的基本方法。选取的实例主要为水

3、轮机调节系统。 本部分主要讨论MATLAB模糊逻辑工具箱在模糊控制系统设计中的应用。2 第三部分第三部分第三部分第三部分 神经网络与应用神经网络与应用神经网络与应用神经网络与应用神经网络工具箱应用神经网络工具箱应用神经网络工具箱应用神经网络工具箱应用 本部分主要讨论MATLAB神经网络工具箱及其GUI工具的应用。u 感知器感知器感知器感知器(Perceptron)(Perceptron)uu 线性神经网络线性神经网络线性神经网络线性神经网络(Linear network)(Linear network)uu BP BP网络网络网络网络 (Back Propagation network)(Ba

4、ck Propagation network)uu 径向基函数网络径向基函数网络径向基函数网络径向基函数网络(Radial Base Function network, RBF)(Radial Base Function network, RBF)uu 神经网络图形用户界面应用神经网络图形用户界面应用神经网络图形用户界面应用神经网络图形用户界面应用uu 神经网络神经网络神经网络神经网络SimulinkSimulink模型设计模型设计模型设计模型设计3第一部分第一部分 MATLAB基础基础及其基本应用及其基本应用 第一章第一章 MATLAB 基础基础 参考教材:参考教材:参考教材:参考教材: M

5、ATLABMATLAB控控控控制制制制系系系系统统统统辅辅辅辅助助助助设设设设计计计计工工工工程程程程师师师师工工工工具具具具软软软软件件件件应应应应用用用用系系系系列列列列欧阳黎明编著,国防工业出版社。欧阳黎明编著,国防工业出版社。欧阳黎明编著,国防工业出版社。欧阳黎明编著,国防工业出版社。 MatlabMatlab神经网络与应用神经网络与应用神经网络与应用神经网络与应用,董长虹编著,国防工业出版社。,董长虹编著,国防工业出版社。,董长虹编著,国防工业出版社。,董长虹编著,国防工业出版社。 MatlabMatlab模糊逻辑工具箱的分析与应用模糊逻辑工具箱的分析与应用模糊逻辑工具箱的分析与应用

6、模糊逻辑工具箱的分析与应用,闻新等编著,科学,闻新等编著,科学,闻新等编著,科学,闻新等编著,科学出版社。出版社。出版社。出版社。 其它相关教材其它相关教材其它相关教材其它相关教材411 MATLAB与控制系统仿真与控制系统仿真111 控制系统与系统仿真控制系统与系统仿真 一般一般一般一般来说来说,控制系统仿真过程可以分为五个步骤:控制系统仿真过程可以分为五个步骤:(1)系统建模:)系统建模:根据要分析的控制系统,建立相应的数学模型。根据要分析的控制系统,建立相应的数学模型。(2)仿真算法:)仿真算法:找到合适的仿真算法。找到合适的仿真算法。 MATLAB已经被确认为已经被确认为准确、可靠的科

7、学计算标准软件。准确、可靠的科学计算标准软件。(3)仿真语言:)仿真语言:应用仿真语言编写计算程序。应用仿真语言编写计算程序。MTLAB语言有语言有非常突出的优点,非常突出的优点,是控制系统仿真首选的仿真语言。控制系统仿真首选的仿真语言。(4)仿真计算:)仿真计算:根据初步的仿真结果对该数学模型进行验证。根据初步的仿真结果对该数学模型进行验证。(5)系统仿真:)系统仿真:进行系统仿真,并认真地分析仿真的结果。进行系统仿真,并认真地分析仿真的结果。 仿真算法仿真算法、仿真语言和仿真程序构成了数字仿真软件。仿真语言和仿真程序构成了数字仿真软件。 确认数学模型的正确性确认数学模型的正确性、仿真算法的

8、可行性仿真算法的可行性、仿真程序的准仿真程序的准确性和可靠性,最后编制成一个成熟的仿真软件。确性和可靠性,最后编制成一个成熟的仿真软件。5 控制系统仿真在教学实践中应用越来越普遍。控制系统仿真在教学实践中应用越来越普遍。 对于改进教学效果对于改进教学效果、给学生提供形象化的信息给学生提供形象化的信息、激发学生的激发学生的学习兴趣、提高学生的自学能力、加强学生对授课内容的理学习兴趣、提高学生的自学能力、加强学生对授课内容的理解等无疑是十分有益的。有利于对学生分析问题的能力和解解等无疑是十分有益的。有利于对学生分析问题的能力和解决问题的能力的培养。决问题的能力的培养。 学生掌握了系统仿真的方法以后

9、,不但使他加强了对所学课学生掌握了系统仿真的方法以后,不但使他加强了对所学课程的理解,同时还便于钻研一些他本人感兴趣的问题,有利程的理解,同时还便于钻研一些他本人感兴趣的问题,有利于部分学有余力的学生进一步自学的要求。于部分学有余力的学生进一步自学的要求。 在美国和欧洲大学中,九十年代将在美国和欧洲大学中,九十年代将MATLAB正式列入了电正式列入了电气工程专业研究生和本科生的教学计划,气工程专业研究生和本科生的教学计划, MATLAB是必须是必须掌握的基本工具。掌握的基本工具。 在设计研究单位和工业界,在设计研究单位和工业界,MATLAB也成为工程师们应该也成为工程师们应该掌握的一种工具,掌

10、握的一种工具,是被认作进行高效是被认作进行高效研究研究、开发的首选软开发的首选软件工具。件工具。61. 1. 2 MATLAB及其课程学习及其课程学习 MATLAB 具具有有计计算算机机语语言言的的属属性性,因因此此可可以以看看作作是是一一种种使使用用方方便便、语语句句效效率率很很高高、更更接接近近于于人人们们思思维维和和表表达达习习惯惯的的一一种种计计算机语言。算机语言。 MATLAB 更更可可以以被被认认为为是是一一种种进进行行科科学学研研究究的的强强有有力力工工具具。理理由由是是具具有有由由各各领领域域顶顶尖尖科科学学家家参参与与开开发发的的、功功能能丰丰富富的的工工具具箱箱。在在这这些

11、些工工具具箱箱的的支支持持下下,人人们们在在各各个个研研究究领领域域几几乎乎都都可可以以找到它的应用。找到它的应用。 与与学学习习其其它它课课程程有有所所不不同同,MATLAB牵牵扯扯面面极极广广,几几乎乎涉涉及及现现代代科科学学的的所所有有领领域域,因因此此,学学习习MATLAB必必须须与与个个人人所所从从事事的学科相结合。的学科相结合。 与与学学习习计计算算机机语语言言类类似似,必必须须勤勤于于实实践践。挖挖掘掘其其功功能能为为科科学学研究服务,主要要靠自己努力。研究服务,主要要靠自己努力。 本课程主要侧重于怎样做,仅在必要时简要说明为什么。本课程主要侧重于怎样做,仅在必要时简要说明为什么

12、。71 11 13 MATLAB3 MATLAB的发展史的发展史的发展史的发展史 MATLAB名字由名字由MATrix和和 LABoratory 两词的前三个字母两词的前三个字母组合而成。那是组合而成。那是20世纪七十年代,时任美国新墨西哥大学计世纪七十年代,时任美国新墨西哥大学计算机科学系主任的算机科学系主任的Cleve Moler出于减轻学生编程负担的动机,出于减轻学生编程负担的动机,为学生设计了一组调用为学生设计了一组调用LINPACK和和EISPACK矩阵软件工具矩阵软件工具包库程序的的包库程序的的“通俗易用通俗易用”的接口,此即用的接口,此即用FORTRAN编写编写的萌芽状态的的萌芽

13、状态的MATLAB。 1984年由年由Little、Moler、Steve Bangert合作成立合作成立MathWorks公司,并把公司,并把MATLAB正式推向市场。从这时起,正式推向市场。从这时起,MATLAB的的内核采用内核采用C语言编写,而且除原有的数值计算能力外,还新增语言编写,而且除原有的数值计算能力外,还新增了数据图视功能。了数据图视功能。 1997年仲春,年仲春,MATLAB5.0版问世,紧接着是版问世,紧接着是5.1、5.2,以及,以及和和1999年春的年春的5.3版。当前的最新版为版。当前的最新版为7.x。现今的。现今的MATLAB拥拥有更丰富的数据类型和结构、更友善的面

14、向对象、更加快速精有更丰富的数据类型和结构、更友善的面向对象、更加快速精良的图形可视、更广博的数学和数据分析资源、更多的应用开良的图形可视、更广博的数学和数据分析资源、更多的应用开发工具。发工具。81 11 14 MATLAB4 MATLAB语言的主要特点语言的主要特点语言的主要特点语言的主要特点(1)具有丰富的数学功能)具有丰富的数学功能 包括矩阵各种运算。如:正交变换、三角分解、特征值、包括矩阵各种运算。如:正交变换、三角分解、特征值、常见的特殊矩阵等。常见的特殊矩阵等。 包括各种特殊函数。如:贝塞尔函数、勒让德函数、伽码包括各种特殊函数。如:贝塞尔函数、勒让德函数、伽码函数、贝塔函数、椭

15、圆函数等。函数、贝塔函数、椭圆函数等。 包括各种数学运算功能。如:数值微分、数值积分、插值、包括各种数学运算功能。如:数值微分、数值积分、插值、求极值、方程求根、求极值、方程求根、FFT 、常微分方程的数值解等。常微分方程的数值解等。(2)具有很好的图视系统)具有很好的图视系统 可方便地画出两维和三维图形。可方便地画出两维和三维图形。 图形用户界面图形用户界面GUI制作工具,可以制作用户菜单和控件。制作工具,可以制作用户菜单和控件。使用者可以根据自己的需求编写出满意的图形界面。使用者可以根据自己的需求编写出满意的图形界面。 高级图形处理。如:色彩控制、句柄图形、动画等。高级图形处理。如:色彩控

16、制、句柄图形、动画等。91 11 13 3 MATLABMATLAB语言的主要特点语言的主要特点语言的主要特点语言的主要特点(续)续)续)续)(3)可以直接处理声言和图形文件)可以直接处理声言和图形文件。(4)具有若干功能强大的应用工具箱。)具有若干功能强大的应用工具箱。(5)使用方便,具有很好的扩张功能。)使用方便,具有很好的扩张功能。 声言文件。如:声言文件。如: WAV文件(例:文件(例:wavreadwavread,soundsound等)。等)。 图形文件。如:图形文件。如: bmp 、gif 、 pcx 、tif 、jpeg等文件。等文件。 对于控制系统的应用如:对于控制系统的应用

17、如:SIMULINK、Control、 Neural Network、 Fuzzy Logic等多种工具箱。等多种工具箱。 可以把可以把M文件转变为独立于平台的文件转变为独立于平台的EXE可执行文件。可执行文件。 使用使用MATLAB语言编写的程序可以直接运行,无需编译。语言编写的程序可以直接运行,无需编译。 MATLAB的应用接口程序的应用接口程序API是是MATLAB提供的十分重要的提供的十分重要的组件组件 ,由,由 一系列接口一系列接口指令指令组成组成 。用户就可在。用户就可在FORTRAN或或C中中 , 把把MATLAB当作计算引擎使用当作计算引擎使用 。 101 11 13 3 MA

18、TLABMATLAB语言的主要特点语言的主要特点语言的主要特点语言的主要特点(续)续)续)续)(6)具有很好的帮助功能)具有很好的帮助功能 提供十分详细的帮助文件(提供十分详细的帮助文件(PDF 、HTML 、demo文件)。文件)。 联机查询指令:联机查询指令:help指令指令(例:(例:help elfun,help exp,help simulink),),lookfor关键词(例:关键词(例: lookfor fourier )。)。1112 MATLAB简介简介 1. 2. 1 MATLAB的基本结构及环境的基本结构及环境 就就其其使使用用效效果果而而言言,MATLAB可可以以被被认

19、认为为是是一一种种解解释释性性编编程程语语言言。其其优优点点在在于于语语法法简简单单,程程序序易易于于调调试试,交交互互性性,且且单单一一语语句句的的效效率率很很高高。正正因因为为如如此此,它它被被称称为为第第四四代代编编程程语语言言。在在图图121中中的的语语言言内内核核及及编编译译控控制制程程序序运运行行部部分分提提供供了了该该语言的运行环境。语言的运行环境。图图121 从从外外部部表表现现来来说说,在在Windows98/2000/XP系系统统环环境境下下安安装装好好MATLAB后后,双双击击MATLAB图图标标或或从从“开开始始”菜菜单单打打开开MATLAB,即即可可进进入入MATLA

20、B集集成成环环境境,也也就就是是MATLAB命命令令窗窗(MATLAB Command Window)。在在后后台台,与与该该命命令令窗窗对对应应的的是是其其工工作作空空间间(Workspace)。MATLAB的的所所有有变变量量,运运算算结结果果均均存存贮贮在在这这个个空空间间中中,并并由由该该空空间间管管理理我我们们所所有有输输入入的的命命令令和函数调用。命令窗外形如图122 所示。 12 1. 2. 2 MATLAB的主要功能的主要功能 MATLAB发展至今,已不仅仅是单纯矩阵运算的数学处理软件,其开放式的结构吸引了许多优秀人才编写M函数和工具箱,目前已经渗透到了工程计算和设计的各个领域

21、。其中与控制系统设计与仿真相关的功能大致有以下各项: 一数值计算及分析 (1) 向量、矩阵的运算分析。 (2) 复数运算及分析 (3) 微分方程的求解 (4) 稀疏矩阵的运算 (5) 特殊函数的计算机分析 (6) 快速傅里叶变换及信号处理矩阵计算 (7) 数据分析及统计计算 二程序语言及算法实现 (1) 程序流程控制语句 (2) C语言产生器 13(3) 文件管理 三MATLAB绘图功能 (1) 二维图形绘制 (2) 特殊坐标图形绘制及修改 (3) 三维坐标图形绘制 四MATLAB与高级语言接口 (1) MATLAB与C语言接口及库函数 (2) MATLAB与C+语言接口及库函数 (3) MA

22、TLAB编译器 五Simulink 建模与仿真 六功能强大的工具箱 (1) 控制系统工具箱(Control System Toolbox) (2) 鲁棒控制工具箱(Robust Control Toolbox) (3) 模型预测控制工具箱(Model Predictive Control Toolbox) (4) mu分析与校正工具箱(mu Analysis and Systhesis Toolbox) (5)多变量系统频域设计工具箱(MultiVariable Frequency Design Toolbox) 14 (6) 定 量 反 馈 控 制 工 具 箱 (Quantitative F

23、eedback Theory Toolbox) (7)频域系统辨识工具箱(Frequency Domain System Identifica-tion Toolbox) (8) 系统辨识工具箱(System Identification Toolbox) (9) 神经网工具箱(Neural Network Toolbox) (10) 小波分析工具箱(Wavelet Toolbox) (11) 最优化工具箱(Optimization Toolbox) (12) 偏微分方程工具箱(Partial Differential Equation Toolbox) (13) 信号处理工具箱(Signal

24、 Processing Toolbox) (14) 图像处理工具箱(1mage Processing Toolbox) (15) 扩展符号数学工具箱(Extended Symbolic Math Toolbox) 1. 2. 3 MATLAB的主要管理命令的主要管理命令 u help 命令: help exp,help simulink等;u lookfor命令: lookfor 关键词,例: lookfor fourier;u demo: 运行演示程序;15u who命令:列出当前工作空间的变量; u whos 命令: 列出当前工作空间的变量(长表);u clear 命令:清除工作空间的所有

25、变量;u save 和 load命令: 在 MATLAB的Command Window中可以方便地将数据存成文件,也可以随时调用数据文件。这可通过选择Command Window的菜单项File Save Workspace As来实现。注意,所有MATLAB的数据文件后缀名必须为mat, 即:XXX.mat。 数据的存储和调用,除了菜单操作之外,还可以直接在工作空间中输入命令。键入命令save,则将工作空间中所有变量存入到磁盘上的MATLAB.mat文件中,当 MATLAB再被运行时,键入命令1oad,则将这些变量从MATLAB.mat文件中调出并重新装入到MATLAB的工作空间中去。16s

26、ave和1oad命令的后边也可以跟文件名和指定的变量名,若仅是直接使用save和load命令,则只能将所有变量存入到MATLAB.mat文件中和从MATLAB.mat文件中将所有变量重新装人工作空间,而加上文件名和指定的变量名后可实现好几种功能,如:Save sy将所有变量存入到sy.mat文件中;1oad sy 将变量从sy.mat文件中调出来,放入当前的工作空间中;若欲存入指定的变量到某个文件中,可使用save sy x y;load sy x y将存入的指定变量 x,y从 sy.mat文件中重新调出到当前工作空间中。此外,SIMULINK也可产生.mat文件,其调用方法与上述方法相同。

27、1. 2. 4 MATLAB的基本使用方法的基本使用方法 有三种方法使用MATLAB: (1)演草纸式的数学运算 17 用MATLAB进行数学运算,就像在计算器上算算术一样简单方便。因此,MATLAB被誉为“演草纸式的科学计算语言”。例如,在MATLAB的Command Window下可以极为方便地进行下列算术运算:4+6+2ans =12注意,输入who命令可检查在工作空间中所建立的变量名。当前工作空间中的变量ans为默认变量,这意味着如果我们没有指定变量的话,所有的运算结果都将赋值给ans。 (2)在Command Window上直接输入MATLAB程序命令语句如: a=4; b=6; c

28、=2; d=a+b+c; d=1218 (3)用编辑器编写程序(脚本文件)然后运行u 在Command Window下选择菜单FileNewM-file 打开编辑器Editor/Debugger;u 在Editor/Debugger中输入程序命令;u 在Editor/Debugger上选择菜单Filesave as, 所有MATLAB 的可运行程序后缀名必须为m, 即:XXX.m;u 在Command Window下选择菜单FileRun-M file, 即可运行。 1. 2. 5 MATLAB的基本语句结构的基本语句结构 MATLAB语言能够完成高级计算机语言的绝大部分功能,语法和语句结构也

29、非常类似,因此,有高级语言基础的读者能够很快适应MATLAB的风格。 一、变量 作为MATLAB的最基本运算单元,变量是具体运算和编写函数的基础。与高级语言类似,变量的基本赋值语句结构是:变量名=表达式 19 变量名可以是字母或数字,但首字符必须是字母。表达式可以是任意合法的数字、函数及运算符。如果表达式没有命名,则MATLAB把结果存储和显示在ans变量中,以备查询和使用。请看下例: 例ex1_1 在MATLAB环境下求解表达式: 求解过程:在MATLAB Command Window下直接键入:x=exp(0.5)+sin(pi/6)*log(sqrt(10) 可得到:x= 2.2244或

30、直接输入exp(0.5)+sin(pi/6)*log(sqrt(10) 可得到:ans= 2.2244 20 通过上述例子可以很快熟悉MATLAB中变量的使用方法,事实上,通过这个例子还会发现MATLAB可以作为一个功能强大的函数计算器使用。关于变量的使用还有一些需要说明的问题:(1)MATLAB对变量名的大小写敏感,大小写代表不同的变量。(2)(2) 显示结果的缺省格式是5位有效数字,命令“format short e”、“format long”和“format long e”的输出格式分别为5位浮点数、15位定点数和15为浮点数。(3)(3) MATLAB中有一些保留的常量,例如inf表

31、示无穷大。MATLAB依照IEEE的标准允许除数为0,产生这种情况时只给出警告,不中止程序,结果为inf。另一个常量NaN表示非数字(Not a Number),一般是由inf/inf或0/0产生的。这些特点使得MATLAB比一般的高级语言有着更高的容错性,更加灵活可靠。(4)(4) 变量在应用之前不必是维数确定的。在MATLAB中,变量一旦被采用,会自动产生(如果必要,变量的维数以后还可以改变)。21 二、运算符和特殊字符 (1) “+”:加号,用于标量、向量和矩阵的相加。例如,A+B,A和B两矩阵必须有相同的大小,或其中之一为标量,标量可以与任意大小的矩阵相加。 (2) “”:减号,用于标

32、量、向量和矩阵的相减。例如, AB,A和B两矩阵必须有相同的大小,或其中之一为标量,标量可以与任意大小的矩阵相减。 (3) “*”:矩阵乘法(注意标量和向量也是矩阵的特殊形式)。例如CA*B为两矩阵线性代数的乘积,即对于非标量A和B,A的列数必须与B的行数相等。 (4) “ .* ”:数组乘积。A .* B表示数组A和数组B的对应元素相乘;A和B必须大小相同,或者其中之一为标量。 (5) “”:斜线或矩阵右除,B/A近似等于B*inv(A)。 (6) “./ ”:数组右除。A ./ B表示矩阵元素A (i, j)/B( i, j), A和B必须大小相同,或者其中之一为标量。 (7)“”:反斜线

33、或左除。如果A为方阵,AB近似等于inv(A)*B。22 (8) “.”: 数组左除。A.B表示矩阵元素B (i, j)/A( i, j), A与B必须大小相同,或者其中之一为标量。 (9) “”:矩阵幂。例如Xp,如果p为标量,表示X的p次幂。X和p不能同为矩阵。 (10) “.”:数组幂。A . B表示矩阵元素A (i, j)的B(i, j) 次幂,A与B必须大小相同,或者其中之一为标量。 (11) “ ”:矩阵转置。A表示矩阵A的线性代数转置。对于复矩阵,表示复共轭转置。 (12) “ : ”:冒号操作符。冒号操作符在MATLAB中起着重要作用。该操作符用来建立矢量,赋予矩阵下标和规定迭

34、代。例如,j:k表示(j j+1 k),A(:,j)表示矩阵A的第j列,A(i,:)表示矩阵A的第i行。 (13) 关系运算符:,分别表示小于”、 “大于”、 “小于等于”、“大于等于”、“等于”、“不等于”;数组进行关系运算时,对每个元素进行比较,运算结果是一个与数组大小一样的由0和1构成的数组。,四种运算,只比较操作数实部,而,既比较实部又比较虚部。23 (14) 逻辑运算符:|,&,xor分别表示“或”,“与”,“非”,“异或”运算。 (15) “%” 操作符: 在MATLAB中以“%”开始的程序行或一行程序中“%”后面的部分,表示注解和说明。这些注解和说明是不执行的。如果注解和说明需要

35、一行以上的程序行,则每一行均需以“%”为起始。 (16) “ ; ”分号操作符: 分号用来取消打印。在MATLAB中,如果一行语句和命令后没有任何符号,则该语句或命令产生的结果均将在屏幕上打印出来。在有些情况下这是必要的,但在有些情况下又是多余的,而且要大大降低程序的运行效率。如果语句的最后一个符号是分号,则打印被取消,但是命令仍在执行,而结果不再显示。此外,在输入矩阵时,除非是最后一行,分号用来指示一行的结束。 三、矩阵和向量的赋值方法 (1) 矩阵和向量的赋值方法 24要输入一个向量如:a=1 2 3 4,可以直接键入 a=1 2 3 4或 a=1 2 3 4。要输入一个矩阵如:可以直接键

36、入A=1 2 3; 4 5 6; 7 8 9。在MATLAB中,应十分注意“:”的用法,它有时会使问题得到简化。如键入x1:4即产生一个l4单位增量的行向量: x=1 2 3 4又如: y=0:pi/4:pi 表示:y=0 0.7854 1.5708 2.3562 3.1416 行向量 z=7:-1:2 表示: z=7 6 5 4 3 2行向量25下面的运算:x=0:0.2:1.0;y=exp(-x).*sin (x); x y产生的结果为:ans = 0 0 0.2000 0.1627 0.4000 0.2610 0.6000 0.3099 0.8000 0.3223 1.0000 0.30

37、96上述矩阵的第一列为向量x,第二列为向量y。请注意这里出现的 “.*”号,正如前面所提到的,它仅表示向量或矩阵元素间的乘运算,而不是通常意义上的向量或矩阵的乘运算。26 (2) 矩阵的下标 设有矩阵则有A(3,3)=9, A(1,3)=4;A(3,1)=3等。 设B为一个1010的矩阵,则B(1:5,3)指B阵第三列中前五行构成的子阵(这里是一个向量)。B(1:5,7:10)指B阵前五行最后四列构成的子阵(这里是一个矩阵)。 四、特殊矩阵及其赋值方法 在控制系统设计领域要用到许多特殊形式的矩阵,例如求解传递函数最小实现时用到的Hankel矩阵,系统参数和阶次辨识时用到的随机矩阵等等。MATL

38、AB提供了许多生成和操作这些27特殊矩阵的函数,并且都是考虑到各种极端的情况,经过专业人员测试通过的,可以放心的使用。下面有选择的简要介绍几种重点的特殊几种函数。 (1) 单位矩阵 单位矩阵可以说是用途最广泛的矩阵之一,MATLAB提供了一条eye()函数可以用来生成指定维数的单位矩阵。这条函数有两种调用格式,第一种是eye (n),生成n维的单位矩阵;第二种是eye (m,n)生成一个 m x n 维的矩阵,其主对角元为1,其余元素为零。 (2) 零矩阵或向量 矩阵或数组所有元素为0。Azeros (n) 返回一个nxn阶零矩阵A=zeros (m, n) 返回一个mxn阶零矩阵28 MAT

39、LAB提供了一条函数diag(),可以用来生成对角矩阵。最简单的调用格式为 diag (V),V是维数为n的向量。 (3) 对角矩阵 所谓对角矩阵就是主对角元为非零元素,其余元素均为零的方阵,在数学文献中一般记为: (4) 随机矩阵 所谓随机矩阵就是矩阵的各个元素是随机生成的。MATLAB的rand()函数生成的随机矩阵的元素满足0, 1区间上的均匀分布。其调用格式为29A= rand (n) 返回一个nxn, 其元素伪随机数的方阵。A= rand (m, n) 返回一个mxn, 其元素伪随机数的矩阵。 m和n分别为随机矩阵的行数和列数。熟悉仿真算法的同学清楚,由计算机生成的随机数只是伪随机数

40、,为了降低数据的相关性应该随时更换随机数发生器的种子数。在MATLAB中,这种想法可以通过调用该函数的 rand (seed,s)格式来实现。其中s是标量,可以通过不同的s值来改变机器随机数发生器的种子数,s = 0则设回缺省值。如:rand (1, 4)ans = 0.2190 0.0470 0.6789 0.6793rand (seed, 1)rand (1, 4)ans =0.5129 0.4605 0.3504 0.0950rand (seed, 0)30rand (1, 4)ans =0.2190 0.0470 0.6789 0.6793 如果希望得到正态分布的随机矩阵,则应该调用r

41、andn()函数,其格式与rand()函数基本类似,缺省是均值为0,方差为1的正态分布的随机数。 (5) Vandermonde 矩阵 (范德蒙矩阵) 将控制系统的可控规范型化为特征值规范型时,所用到的变换矩阵就是由原规范型的系数矩阵特征值组成的范德蒙(Vandermonde)矩阵。控制领域使用的Vandermonde矩阵的具体形式为: 31 MATLAB提供了一条实现此Vandermonde矩阵的函数vander(),但是使用此函数生成的Vandermonde矩阵和上述的W矩阵相差90o。也就是说,将用vander()函数生成的矩阵元素逆时针旋转90o后就是控制领域常用的Vandermond

42、e矩阵。MATLAB提供了一条函数rot90()专门用来对矩阵的元素进行逆时针旋转90o的操作,请看下例:C=1 2 3 4vander(C)ans = 1 1 1 1 8 4 2 1 27 9 3 1 64 16 4 1rot90(ans)32ans = 1 1 1 1 1 2 3 4 1 4 9 16 1 8 27 64 (6) Hankel矩阵 给定一个序列cc1, c2,cn,用这些数写出一个矩阵,第(i,j)元素为hi,jCi+j-1, 这样就构成一个Hankel矩阵,因此,该种矩阵是对称矩阵,且其反对角线上元素相同。n阶Hankel矩阵表示为33 在MATLAB中生成Hankel矩

43、阵有两种方法: Hhankel (c) 产生一个Hankel方阵其第一列元素为向量c,而反主对角线以下 元素均为0。 Hhankel (c, r) 产生一个Hankel矩阵,其第一列元素为向量c,最后一行元素是 r,如果c最后一个元素与r第一个元素不等,取c最后一个元素。 (7) 线性间隔向量 产生线性增量的向量;其功能与“:”操作相似。 v=1inspace(a, b) 产生一个在a,b间线性间隔的100点行向量v。 v=1inspace(a, b, n) 产生一个在a,b间线性间隔的n点行向量v (8) 对数间隔向量 产生对数增量向量, 对于产生频率向量特别有用。 vlogspace (a

44、, b) 产生一个在10a10b间的50个对数间隔点的行向量v;vlogspace (a, b, n) 产生一个在10a10b间的n个对数间隔点的行向量v;v1ogspace(a,pi) 产生一个在10api间的50个对数间隔点的行向量v。34 1. 2. 6 MATLAB的数据类型的数据类型 现有四种基本数据类型:双精度数组、字符串数组、元胞数组、构架数组。 (1) 构架数组(Structure Array)能存放各类数据。 类似于C语言中的结构,即通常所说的 Structure。该数组的基本组分是域。构架数组的创建和使用以例子来说明:例:ex1_struc。本例通过温室数据(包括温室名、容

45、积、温度、湿度等)演示单构架green_house的创建和使用。它有三个域:name, volume, parameter。 而 parameter又 有 两 个 子 域 :temperature,humidity。% 构架的域由(构架名).(域名)标识。green_house.name=一号房;green_house.volume=2000立方米;% 域还可包含子域35green_house.parameter.temperature=31.2,30.4,31.6,28.7,29.7,31.1,30.9,29.6;green_house.parameter.humidity=62.1,59.

46、5,57.7,61.5, 62.0,61.9, 59.2,57.5; 上述4条语句则构建了构架数组green_house。在command win dows 下键入相应命令可得:green_house.name ans =一号房green_house.parameter.temperatureans =31.2000 30.4000 31.6000 28.7000 29.7000 31.1000 30.9000 29.6000 该数组的基本组分是域。该数组的基本组分是域。 构架必须在划分构架必须在划分“域域”后才能使用。后才能使用。 数据不能存放于构架,只能存放在域中。数据不能存放于构架,只能

47、存放在域中。36例:ex1_cell。本例演示:元胞数组的创建。C_str=char(武汉大学,动力系); % 产生字符串R=1 2 3;4 5 6;7 8 9; % 产生(3X3)实数阵RCn=1+2i; % 产生复数标量S_sym=sym(sin(-3*t)*exp(-t); % 产生一个符号函数% (1)直接创建法之一:“外标识元胞元素赋值法” A(1,1)=C_str; A(1,2)=R; A(2,1)=Cn; A(2,2)=S_sym;(2) 元胞数组(Cell Array) 元胞数组是一种比较特殊的数组形式,使用方便,其形式就如同银行里的保险箱库一样。在Matlab中,当描述一个较

48、大的数据集合,如一个神经网络就通常使用元胞数组。 构架的域可以存放任何类型、任何大小的数组。构架的域可以存放任何类型、任何大小的数组。 不同构架的同名域中存放的内容可不同。不同构架的同名域中存放的内容可不同。37% (2)直接创建法之二:“编址元胞元素内涵的直接赋值法”B1,1=C_str;B1,2=R;B2,1=Cn;B2,2=S_sym; 上述语句运行后,则生成了元胞数组A, B。元胞数组的显示和引用可参见下面的实例。在 command windows 下键入相应命令可得:(a) 显示元胞数组结构A A = 2x4 char 3x3 double 1.0000+ 2.0000i 1x1 s

49、ym (b) 显示元胞数组内容38celldisp(A) A1,1 = 武汉大学动力系 A2,1 = 1.0000 + 2.0000iA1,2 = 1 2 3 4 5 6 7 8 9A2,2 =sin(-3*t)*exp(-t)39(c) 引用元胞数组元素内容x=B1,2 x = 1 2 3 4 5 6 7 8 9y=B1,2(1,2)y = 2 该数组的基本组分是元胞(Cell),以中的下标来区分。 元胞可以存放任何类型、任何大小的数组。 同一个元胞数组中各元胞的内容可以不同。40 1. 2. 7 MATLAB的基本矩阵运算的基本矩阵运算(1) 矩阵的行列式运算 det(A)。 (2) 矩阵

50、迹的运算 trace(A)。矩阵的迹定义为其对角线上各元素之和,矩阵的迹与矩阵的特征值之和是相等的。(3) 矩阵求秩 rank(A)。矩阵A=aij, i=1,2,m, j=1,2,n。如果该矩阵中共有rc个列向量线性无关,则称矩阵的列秩为rc,rcm,则为列满秩矩阵;如果该矩阵中共有rr个行向量线性无关,则称矩阵的行秩为rr,rr=n则为行满秩矩阵,可以证明,矩阵的行秩与列秩是相等的,即,rank(A)=rc=rr 。(4) 矩阵的特征值与特征向量 定义:对于一个矩阵A=aijnxn;如果存在非零向量 x= x1, x2, , xn, 且有一个标量入入 满足:Ax入入x;则入入为A的一个特

51、征值,而x为对应于特征值 入入 的特征向量。 41 运算: V, Deig (A)。D为对角阵,其对角线上为A的特征值,每个特征值对应矩阵V的列为特征值的特征向量,该矩阵为一满秩矩阵,AVVD;且每个特征向量各元素之平方和均为l。(5) 矩阵求逆及广义矩阵逆 矩阵求逆通常与线性方程的求解有关,对于线性方程AxB;式中A和B为相容维数的矩阵,而x也为矩阵,是方程的解。如果A为非奇异方阵,则可得出:x=A-1B,称A-1为A的逆矩阵。一般地,对一个已知的nxn阶非奇异方阵A来说,如果有一个同样大小的矩阵C满足ACCAI则称C为A的逆矩阵,并记逆矩阵为:CA-1。MATLAB中求逆函数为 Cinv(

52、A) 它返回方阵A的逆,如果A为奇异或接近奇异矩阵,则产生出错信息。 如果需要求奇异矩阵的一种“逆”阵,这种“逆”就称为矩阵的广义逆,又叫伪逆,其定义如下:如果存在一个矩阵N,满足42ANAA,则N称为A的广义逆矩阵,记作NA。在MATLAB中求矩阵广义逆的函数为: Npinv(A) 它返回矩阵A的广义逆。(6) 矩阵的特征多项式、特征方程与特征根 若A为一方阵,I为与A同阶的单位矩阵,则可构成矩阵:CxI-A,求该矩阵的行列式,得一多项式:C(x),C(x)det(xI-A)=c0xn+c1xn-1+cn-1x+cn,该多项式C(x)称为矩阵A的特征多项式,其中系数ci, i0,1,2,n称

53、为矩阵A的特征多项式系数。MATLAB中提供了求矩阵特征多项式系数的函数,其调用格式为:cpoly(A)A为n阶方阵,返回一个由n+1个元素组成的行向量c,其各个分量为矩阵A的降幂排列的特征多项式系数。 令特征多项式等于0所构成的方程式为该矩阵的特征方程,而特征方程的根为该矩阵的特征根。MATLAB中求矩阵特征根的函数调用方法为: 43rroots(c) c为特征多项式的系数向量,而所求得的列向量r为特征方程的解,即原矩阵的特征根。 在已知矩阵的特征根向量r后,也可求得原矩阵的特征多项式系数:cpoly(r) r为矩阵的特征根向量,返回一个行向量c,其各个分量为原矩阵A的降幂排列的特征多项式系

54、数。 (7) 矩阵的三角分解 矩阵的三角分解就是将一个满秩方阵分解为一个下三角矩阵和一个上三角矩阵的乘积,又称为矩阵的LU分解。高级语言中一些求解线性方程组的算法就是基于矩阵的LU分解,因为,相对来说上三角和下三角矩阵的逆矩阵是比较容易求解的,并且如果注意到主对角元选取的问题,就可以保证计算的数值稳定性。在系统辨识的阶次推导和Hankel矩阵的理论推导过程中也会用到LU分解。 44基本矩阵函数:基本矩阵函数: cond(A), dot(A,B),norm(A,1), norm(A,2), norm(A,inf), norm(A,fro), rcond(A), svd(A), 。MATLAB中提

55、供的将满秩方阵分解为一个下三角矩阵和一个上三角矩阵乘积的方法如下:L U=lu(A) 除上面介绍的常用方法之外, MATLAB还提供了很多基本矩阵函数和矩阵分解函数,如:矩阵分解矩阵分解函数:函数: cdf2rdf(V ,D), chol(A), Hess(A) , null(A), LU(A), orth(A), qr(A), qz(A), rref(A), rst2csf(V ,D), schur(A), subspace(A ,B), svd(A) 。 这些函数的用法可通过这些函数的用法可通过 help 命令查询,此处不再过多描述。命令查询,此处不再过多描述。 45 1. 2. 8 MA

56、TLAB的矩阵非线性运算的矩阵非线性运算 前边介绍的主要是加、减、乘、除等矩阵的基本运算,包括求逆、对角化、旋转等线性变换在内,这些运算统称为矩阵的线性运算。而矩阵的非线性运算,一般我们在学习线性代数的过程中恐怕接触得比较少。这些非线性运算主要是根据不同的工程需要发展起来的,一方面是实际运算的需要,另一方面也是为了书写简洁。这些非线性运算主要分为两大类:一类是对矩阵元素的非线性运算,基本上标量的非线性运算都可以在矩阵运算中找到对应的版本(如前所述,事实上MATLAB运算的基本元素是矩阵,标量的运算也是以矩阵的方式进行的);另一类是对于整个矩阵的非线性运算,包括求取矩阵的指数、对数或者是任意表达

57、式的函数等等;事实上这些对整个矩阵的非线性运算都是用加、减、乘、除等线性运算来近似的,但使用MATLAB提供的矩阵非线性运算函数,可以事半功倍,省去了高级语言编程的工作量,迅速得到相应的结果。46(1) 矩阵元素的非线性运算 矩阵元素的非线性运算是对矩阵的单个元素进行的。当然,我们既可以对矩阵中指定的元素进行非线性运算,也可以对矩阵中每个元素整体进行同样的非线性运算。有关标量的非线性运算基本都可以对矩阵进行,只是需要特别注意该非线性函数的实现条件。下表列出了一些常用的矩阵非线性函数,更多的信息可从帮助文件获得。47例如:A=1 2 3 4;5 6 7 8;4 3 2 1;8 7 6 5 A =

58、 1 2 3 4 5 6 7 8 4 3 2 1 8 7 6 5log(A) ans = 0 0.6931 1.0986 1.3863 1.6094 1.7918 1.9459 2.0794 1.3863 1.0986 0.6931 0 2.0794 1.9459 1.7918 1.6094log(A(1,:) ans = 0 0.6931 1.0986 1.386348(2) 整个矩阵的非线性运算 MATLAB提供了一条函数funm()可以进行矩阵一般函数运算,但这条函数语句在实现过程中使用了一种潜在不稳定的算法,尤其是对于病态矩阵,有可能得出不正确的结果。如果该函数内嵌的检查器检查出不符合

59、计算条件的矩阵,MATLAB就会自动报警。但这个检查器过于灵敏,虚警概率较高。因此,对于常用的矩阵指数和对数等运算,MATLAB推荐使用其专有函数expm()、logm(),这些函数的实现算法与funm()不同。 funm()的调用格式为:F = funm (A,fun),一般要求A是方阵。我们仍然使用上例 的矩阵A,有:funm(A,cos) Warning: Result from FUNM may be inaccurate. esterr = 1.ans = 0.2541 -0.3325 0.0809 0.4943 -0.8214 0.5920 0.0054 0.4189 0.6515

60、 0.2381 0.8247 -0.5887 0.5760 0.1626 -0.2508 0.3358 49 可以看到MATLAB警告说funm()函数计算结果可能不准确。为了保险起见,对于一般的非线性运算可以用Taylor级数来近似,用MATLAB语言编程只需很短的程序就可以实现,精度和准确性都可以人为设定。 在控制系统设计和仿真领域,使用最多的矩阵非线性运算就是矩阵指数运算,其定义为:对于nxn的方阵A,有: 对于控制系统的状态空间描述形式Ax=Bu,因为下式的存在: 即状态空间系数矩阵A的指数的拉普拉斯变换等于其预解矩阵,而预解矩阵是求解状态空间方程的关键,因此,指数矩阵获得了非常广泛的

61、应用。状态方程的求解、系统的模态判定等等都要用到指数矩阵的概念。 50 MATLAB提供了四条函数可以求解矩阵指数,分别是expm()、expml()、expm2()、expm3。 其中expm()和expml()都使用Pade算法来逼近矩阵指数的真实值,对于没有特殊限制的矩阵,一般推荐使用这两个函数,能够保证算法的收敛性,其缺点是速度比较慢。这两个函数的区别是:expm()嵌在系统内核里,而expml ()是以M文件的格式存为外部函数。expm2()使用上述矩阵指数的定义式来计算,即Taylor展开法。这种方法的优点 是结构和思路都比较简单,适于用户自己修改和控制,满足其特殊要求。其缺点是速

62、度比较慢且不能保证算法一定收敛(绝大部分情况是可以保证得到正确结果的)。expm3()对特征向量满秩的矩阵进行了优化,通过A矩阵的特征向量和特征值来计算其指数矩阵。 例:考虑如下矩阵A,试比较分别用expm()、expm2()和expm3()求解其矩阵指数的结果。51A=2 3 4 5;0 2 3 4;0 0 4 5;0 0 0 4 A = 2 3 4 5 0 2 3 4 0 0 4 5 0 0 0 4expm(A) ans = 7.3891 22.1672 167.3879 691.5055 0 7.3891 70.8136 326.8702 0 0 54.5982 272.9908 0 0

63、 0 54.598252expm2(A) ans = 7.3891 22.1672 167.3879 691.5055 0 7.3891 70.8136 326.8702 0 0 54.5982 272.9908 0 0 0 54.5982expm3(A) Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 3.847805e-017.ans = 7.3891 0 200.6386 184.6619 0 7.3891 70.8136 0 0 0 54.5982 0 0

64、0 0 54.598253 从以上的代码和运行结果中可以看出,expm3()函数在求解有重特征值矩阵(上例特征值为2,2,4,4)的指数时有可能得到不正确的结果,而使用expm()和expm2()时一般会得到正确的结果。因此,如果不是对计算时间要求过高的话,一般使用expm()或原始的定义式expm2 ()。(3) 特殊函数u besselj (NU,Z) 、bessely (NU,Z) : 贝塞尔函数;贝塞尔函数;u beta (Z,W): beta函数;函数;u erf(X)、 erfinv(Y): 高斯分布函数的积分;高斯分布函数的积分; u gamma(X): gamma函数;函数;u

65、 rat (X,tol): 有理逼近函数;有理逼近函数;u ellipke (M,tol)、 ellipj (U,M) :椭圆积分函数:椭圆积分函数 这些函数不一定我们每个人都能在工作中全都遇到。但一旦这些函数不一定我们每个人都能在工作中全都遇到。但一旦需要,均可通过需要,均可通过help来获得其用法,并且可以为我们带来很大的来获得其用法,并且可以为我们带来很大的方便。方便。54 1. 2. 9 MATLAB的数据统计分析的数据统计分析 MATLAB提供了一系列的函数,用于对数据集合进行统计分析。例如:求最大值、最小值、平均值、标准偏差 、相关系数等。对于一组给定的数据,xi, i=1,2,N

66、, 在MATLAB中用一向量表示为:x=x1,x2,xN。常用的MATLAB数据分析函数有:u 求最大值,max(x);u 求最小值,min(x);u 求平均值,mean(x);u 求标准差,std(x);u 求协方差,cov();u 求相关系数,corrcoef();u 求元素之差或近似导数,diff();u 求梯度值,gradient();u 排序,sort(x);u 元素乘积,prod(x);55 1. 2. 10 MATLAB的数值分析的数值分析 MATLAB提供了一系列的函数,求函数极值、函数零点和极点、数值积分、数值微分、微分方程的数值解等。(1) 极值分析 在实际分析和应用中,我

67、们常对一些函数的极值感兴趣,MATLAB中提供了求函数极小值的函数:fmin(),fmins(),用于单纯形法求解最优化问题,可求解极大值或极小值,在求函数极大值时,定义一个函数为原函数的负函数,而用fmin()或fmins()求新定义函数的极小值,即可求出原函数的极大值。 函数:xfmin (fun, xl, x2) 返回函数fun(x)在区间xl, x2内的局部极小值。 函数: xfmin (fun, xl, x2, options)使用options对参数进行控制,同样返回函数fun (x)在区间xl,x2内的局部极小值。56(2) 零点分析 zfzero (fun, x) 找到函数fu

68、n在x附近的零点。fun为一个函数名的字符串,函数为单变量实值函数。返回值的附近函数变号。如果x为两元素向量,则认为x为区间。如果找到Inf,NaN,或复数值,则停止在查找区间内的搜索。例:z=fzero(cos,2) z = 1.5708 (3) 数值积分 数值积分方法实际上是计算函数图形下的面积。常用求定积分的方法有:梯形法、Simpson方法、Romberg方法等。 Matlab中常用积分函数有: u quad(): q=quad (fun, a, b) 返回函数fun在上、下限a和b上的数值积分。57u quad8(): quad8()函数是更高阶的求积分方法,具有与quad()同样的

69、调用方法。函数quad()采用低阶方法,使用自适应递归Simpson法则,而quad8()采用较高阶方法,使用自适应递归Newton-Cotes 8 panel法则。u trapz(): trapz ()函数通过计算(单位间隔)梯形面积的方法来求积分。调用格式如下: Ttrapz (Y) 如果Y为向量,则计算Y的积分;如果Y是矩阵,得一个每列积分的行向量。 Ttrapz (X, Y) 用梯形积分法,依据X计算Y的积分。 例如:quad(sin,0,pi) ans = 2.0000x=0:pi/100:pi;y=sin (x);58z=trapz (x, y) z = 1.9998z=(pi/1

70、00)*trapz (y) z = 1.9998(4) 数值微分 积分描述了函数的整体或宏观性质,而微分则描述了函数在某一点处的斜率,表现函数的微观性质。因此函数的形状在小范围内的改变对其积分影响不大,而对于微分来讲,这些微小变化使其值变化很大。因此,数值微分比数值积分的困难将大得多。MATLAB中常用的求微分的方法有:求多项式微分函数polyder(),通过计算数组中元素间的差分函数diff()来粗略计算微分函数等。对于多项式而言,常用下述方法调用polyder():59Kpolyder (p) 返回多项式p的微分;Kpolyder (a, b) 返回多项式a和b乘积的微分;q, dpoly

71、der (b, a) 返回多项式商b/a的微分,分子q,分母d。例:有两多项式 a=3,4,3,9;b=2,3,1;k=polyder(a) k = 9 8 3k2=polyder (a, b) k2 = 30 68 63 62 30q, d=polyder (b, a) 60q = -6 -18 -15 28 24d = 9 24 34 78 81 54 81 1. 2. 11 用用MATLAB实现付立叶变换实现付立叶变换 设有时间函数w(t),应用FFT,求时间函数w(t)的Fourier级数展开系数。Ffft (w, N) (付立叶变换)w=ifft (F, N) (付立叶逆变换)61

72、1. 2. 12 MATLAB的符号计算的符号计算 符号表达式和符号符号表达式和符号矩阵。矩阵。 符号符号矩阵矩阵的基本的基本运算。运算。 符号计算的两大特点:符号计算的两大特点:符号解和任意精度解。符号解和任意精度解。 MATLAB的符号计算借助符号工具箱(的符号计算借助符号工具箱(Symbolic)实现实现。 定义基本符号对象的指令有两个:定义基本符号对象的指令有两个:sym,syms。 符号表达式:符号表达式: 。 符号符号矩阵:矩阵: 两个符号两个符号矩阵矩阵的和:的和: symadd(A,B) 两个符号两个符号矩阵矩阵的差的差: symsub(A,B) 两个符号两个符号矩阵矩阵的积的

73、积: symmul(A,B) 两个符号两个符号矩阵矩阵的除的除: symdiv(A,B) 符号符号矩阵矩阵的求逆的求逆: inv(B)62 符号微积符号微积分。分。 符号积符号积分变换。分变换。 符号代符号代数方程数方程的求解。的求解。 符号微符号微分方程分方程的求解:的求解:y1,y2,=dsolve(a1,a2,an) 符号表达式的微符号表达式的微分:分: diff(f) 符号表达式的积符号表达式的积分:分: int(f) 线性线性方程组方程组的符号解:的符号解:X=linsolve(A,B)()(特解特解) 一般代一般代数方程数方程的解:的解:solve(S)X,Z=linsolve(A

74、,B)()(通解通解)例:构建一个符号矩阵SAsym(sin(t),t2;exp(t),cos(t) 63SA = sin(t), t2 exp(t), cos(t)例:求两符号矩阵之和SB=symadd(SA, SA) SB = 2*sin(t), 2*t2 2*exp(t), 2*cos(t)例:求两符号矩阵之积SB=symmul (SA, SA) SB = sin(t)2+t2*exp(t), sin(t)*t2+t2*cos(t) exp(t)*sin(t)+cos(t)*exp(t), t2*exp(t)+cos(t)264例:求符号矩阵的逆SC=inv (SA) SC = -cos

75、(t)/(-sin(t)*cos(t)+t2*exp(t), t2/(-sin(t)*cos(t)+t2*exp(t) exp(t)/(-sin(t)*cos(t)+t2*exp(t), -sin(t)/(-sin(t)*cos(t)+t2*exp(t)例:符号矩阵的微分SD = diff(SA) SD = cos(t), 2*t exp(t), -sin(t)例:符号矩阵的积分SE=int(SA) SE = -cos(t), 1/3*t3 exp(t), sin(t)65例:解代数方程组y=sym(a*x2 + b*x + c);solve(y)ans = 1/2/a*(-b+(b2-4*a

76、*c)(1/2) 1/2/a*(-b-(b2-4*a*c)(1/2) solve(y, b)ans = -(a*x2+c)/xS= solve(x + y = 1,x - 11*y = 5);S.x ans =4/3S.y ans =-1/366A = solve(a*u2 + v2, u - v = 1, a2 - 5*a + 6) A = a: 4x1 sym u: 4x1 sym v: 4x1 symA.a = 2 2 3 3A.u = 1/3+1/3*i*2(1/2) 1/3-1/3*i*2(1/2) 1/4+1/4*i*3(1/2) 1/4-1/4*i*3(1/2)A.v = -2/

77、3+1/3*i*2(1/2) -2/3-1/3*i*2(1/2) -3/4+1/4*i*3(1/2) -3/4-1/4*i*3(1/2)67例:解微分方程(组)dsolve(Dy = a*y) Ans=C1*exp(a*t)dsolve(Df = f + sin(t)Ans=-1/2*cos(t)-1/2*sin(t)+exp(t)*C1dsolve(Dy)2 + y2 = 1,s) Ans= -1 1 sin(s-C1) -sin(s-C1)68dsolve(Dy = a*y, y(0) = b)ans = b*exp(a*t)dsolve(D2y = -a2*y, y(0) = 1, Dy

78、(pi/a) = 0)ans =cos(a*t)S=dsolve(Dx = y, Dy = -x);S.x ans =cos(t)*C1+sin(t)*C2S.y ans =-sin(t)*C1+cos(t)*C2691 1.2.13 MATLAB.2.13 MATLAB中的计算结果可视化中的计算结果可视化中的计算结果可视化中的计算结果可视化 (1)二维曲线图形)二维曲线图形 MATLAB最基本的二维图形绘制语句为plot(),这是绘制线性x-y坐标图最常用的命令。使用这条语句绘制图形时不必考虑坐标平面的大小,x轴和y轴的刻度也是自动标出的。我们首先通过下面这个简单的例子,熟悉plot()语句

79、的用法: 例:如果用户想绘制出一个周期内的正弦曲线,那么在 MATLAB的Command Window中键入下列命令: x=linspace(0,2*pi,30);y=sin(x);plot(x,y); 图图1 12 23 3正弦曲线正弦曲线有时在实际工作中,需要将不同的曲线绘制在同一个图形窗口中以便于比较,在MATLAB中允许在一个绘图窗口中同时绘制多条曲线,例如在Command Window中继续键入命令:70z=cos(x);plot(x,y,x,z)则在同一个图形窗口中得到一个周期内的正弦和余弦曲线,如图124 所示。事实上,plot()语句提供了繁多的可选参数和修饰功能,其完整的调用

80、形式如下: plot(X1,Y1,S1,X2,Y2,S2,X3,Y3,S3,) 其中Xi表示X轴的数据,Yi表示Y轴的数据,Si是可选的控制参数,控制输出图形的颜色或线条的类型。其可选参数见图125。(2)二维曲线图形的修饰)二维曲线图形的修饰 绘制完曲线后,MATLAB还提供了一些特殊绘图函数来进一步修饰画出的图形,例如绘图形加上网格(grid)、对坐标轴进行标准说明 (xlabe1、ylabe1)、绘图形加上图题(title)。71此外,还可以在图形的任意位置加上说明性的文本 (text)。下面用一个简单的例子来说明这些特殊函数的用法。 例:在 MATLAB的Command Window中

81、键入下列命令: x=linspace(0,2*pi,30);ysin(x);z=cos(x);plot(x,y,x,z);grid;x1abel(时间)ylabel(电压、电流)title(机组电量波形)即可得到加上了标注和网格的图形。如果要在图形中的任意位置上加上说明性的文本字符串,可以使用命令72text(x,y,string),其中坐标(x,y)代表字符串string的左边缘所在点的位置。用text命令可以在图形中的任意位置加上文本说明,但是必须知道其位置坐标。而利用另一个函数gtext,则可以用鼠标来对要添加的文本字符串定位。例如在 MATLAB的Command Window中继续键入

82、下列命令: gtext(cos(x)那么在图中,将会出现一个十字叉,用鼠标拖动它到添加文本的位置,单击鼠标,gtext命令中的文本字符串(cos(x))就会自动添加到图中。 (3)二维图形坐标轴的修改)二维图形坐标轴的修改 MATLAB可以自动根据曲线数据的范围选择合适的坐标系,从而使得曲线能够尽可能清晰地显示出来,所以一般情况下用户不必担心图形坐标的选择。但是如果用户对图中横坐标73和纵坐标不太满意,还可以利用函数 axis()来对坐标轴进行修改。axis()的功能非常丰富,它最基本调用方法为:axis( XMIN XMAX YMIN YMAX )其中,XMIN, XMAX指定X轴范围,YM

83、IN, YMAX指定Y轴范围,图形中任何超出指定范围的部分将被忽略。(4)图形窗口的分割 在实际工作中,有时需要在同一个图形窗口中绘制多个图形,这时候就需要对图形窗口进行分割。分割图形窗口的工作是由函数 subplot()来设置的。该函数的调用格式是 subplot(n,m,k),其中,n、m分别表示将这个图形窗口分割的行数和列数,而 k表示要画图部分的代号。下面给出一个例子来说明图形分割的具体运用。 例: 将图形窗口分割成4份,并分别绘制图形。 74x=linspace(0, 2*pi, 30); y=sin(x); z=cos(x);a=2*sin(x).*cos(x); b=sin(x)

84、./(cos(x)+eps);subplot(2, 2, 1);plot(x, y, k),title(sin(x) 2,2,1);grid;axis(0 6.28 -1.2 1.2);subplot(2, 2, 2);plot(x, z, k), title(cos(x) 2,2,2);grid;axis(0 6.28 -1.2 1.2);subplot(2, 2, 3);plot(x, a, k),title(2*sin(x)cos(x) 2,2,3);grid;axis(0 6.28 -1.2 1.2);subplot(2, 2, 4);plot(x, b, k);title(sin(x

85、)/cos(x) 2,2,4)gridaxis(0 6.28 -20 20) 图126分割波形图 75(5)特殊二维图形指令:)特殊二维图形指令: 填充的函数折(曲)线图(面域图):填充的函数折(曲)线图(面域图):area 直方图:直方图:bar 垂直的直方图:垂直的直方图:barh 三维直方图:三维直方图:bar3 垂直的三维直方图:垂直的三维直方图:bar3h 慧星轨迹状的图形:慧星轨迹状的图形:comet 误差棒图:误差棒图:errorbar 符号函数二维曲线:符号函数二维曲线:ezplot 沿沿X轴分布的复数向量图(羽毛图):轴分布的复数向量图(羽毛图):feather 射线图:射线

86、图:compass 平面多边形填色平面多边形填色 :fill 76 数值数值函数二维曲线(泛函绘图指令):函数二维曲线(泛函绘图指令):fplot 向量的统计直方图:向量的统计直方图:hist 带有标准的直方图:带有标准的直方图:pareto 饼图:饼图:pie 三维饼图:三维饼图:pie3矩阵矩阵折(曲)线图:折(曲)线图:plotmatrix 散点图(与相似散点图(与相似 ,但是只有数据点):,但是只有数据点):scatter 火柴杆图:火柴杆图:stem 阶梯图:阶梯图:stairs 带状图:带状图:ribbon77(6)三维图形指令)三维图形指令 与二维图形绘制相比,三维图形在经典控制

87、系统研究中的应用并不是很多,主要集中在运动轨迹的绘制和信号处理等方面。但在后面要介绍的模糊控制和神经网络中,有较大的用途,因此在此也进行一些介绍。 自从4.0版本以后,MATLAB大大 强化了三维图形的绘制功能,有十几条语句可以绘制不同类型的三维曲线、三维网格图、三维曲面图和等高线。例如,在前面二维图形的绘制中我们常用plot()函数,这里,我们可以直接调用与plot()语句相似的plot3()语句绘制三维曲线,格式完全相同,只不过多一个数据参数。并且MATLAB使漂亮的三维曲面不再只是高级程序员的专利,非常复杂的表达式只消短短几行就可以实现了。(a)三维曲线函数:plot3() plot3(

88、)类似于二维绘图工具plot()。 plot3(x,y,z) 如果x,y,z 是三个具有相同长度的向量,则绘制一条通过坐标为(x,y,z) 的点的线。例如: 78t=0:0.05:100;x=t.*sin(t);y=t.*cos(t);z=t;plot3(x,y,z);grid;画三维曲线:X=tsint, y=tcost, z=t, 则相应的语句和结果为:79 (b)视图函数:view() view (AZ,EL)与 view (AZ EL) 设置观察三维图形的观察者的视角。AZ是方位角或者是水平旋转角度,EL是仰角。方位角是绕着Z轴旋转,其数值代表着视点沿逆时针旋转的角度。仰角的正值代表向

89、物体的上方移动,负值代表向下方移动。例如在上图基础上进一步键入view(-30,60); 则有则有80view(2) : 设置二维的缺省视角,其中AZ=0,EL=90oview(3) : 设置三维的缺省视角,其中AZ-37.5o,EL30o (c)函数 meshgrid() 目的:转换由向量x,y所指定的区域为数组,以便对二元函数及三维表面图形进行计算,从而生成2维平面网络。 调用格式:X, Y=meshgrid(x, y) 例如:xx=-3:1:3;yy=-3:1:3;%生成2维平面网络x,y=meshgrid (xx, yy);则有:81x = -3 -2 -1 0 1 2 3 -3 -2

90、 -1 0 1 2 3 -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3y = -3 -3 -3 -3 -3 -3 -3 -2 -2 -2 -2 -2 -2 -2 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3 3 3 382 (d)函数 mesh() mesh (X,Y,Z,C) 绘制由四个矩阵所指定的带颜色参数网状表面图。视角是由view() 所指定的。轴的刻度决定于X,Y及Z值

91、的范围,或当前对轴的设定;颜色刻度范围由C指定,或使用mesh (X,Y,Z) 语语句句,在在这这种种情情况况下下,默默认认C与与Z相相等等。例如,绘制下面算式确定的曲面: 相对应的Matlab命令:xx=-3:0.2:3;yy=-3:0.2:3;% 生成三维曲面原始数据x,y=meshgrid (xx,yy);% 生成2维平面网络83z=3*(1-x).2.*exp(-(x.2)-(y+1).2). -10*(x/5-x.3-y.5).*exp(-x.2-y.2). -1/3*exp(-(x+1).2-y.2);% 绘制加网格的三维曲面mesh (x, y, z);84(e)函数 surf(

92、),waterfall() surf()、waterfall()与mesh()类似,仅有很小的区别。仍使用上面例子已生成的x, y, z, 则:语句:语句: surf (x, y, z);产生右图所示结果:85语句:语句: waterfall (x, y, z); 产生下图所示结果:86Matlab 还提供了一些绘制三维图形的工具函数,现列写如下:u 等高线函数:contour(),contour3() ;u 箭袋图函数:quiver() ;u 等高线高度标注函数:clabel();u 伪彩色图函数:pcolor() u 坐标轴标注函数:xlabel(), ylabel(), zlabel()

93、, u 隐藏命令:hidden 设置或撤消mesh()函数绘制图形的隐藏线。87(7)句柄图形句柄图形 图形对象、对象句柄和句柄图形树。图形对象、对象句柄和句柄图形树。 句柄图形(句柄图形(Handle Graphics)是一种面向对象的绘图系统。是一种面向对象的绘图系统。该系统提供创建计算机图形所必须的各种软件。它所支持的该系统提供创建计算机图形所必须的各种软件。它所支持的指令,可直接创建线、指令,可直接创建线、 文字、文字、 网线、面以及图形用户界面。网线、面以及图形用户界面。前述的前述的MATLAB高层图形指令高层图形指令都是以句柄图形软件为基础写都是以句柄图形软件为基础写成的,所以句柄

94、图形也称为成的,所以句柄图形也称为低层图形指令低层图形指令。 MATLAB把用于数据可视和界面制作的基本绘图要素称把用于数据可视和界面制作的基本绘图要素称为句柄图形对象。为句柄图形对象。 构成构成MATLAB句柄图形体系有句柄图形体系有12个图形对象:根屏幕、个图形对象:根屏幕、图形窗、界面控件、轴图形窗、界面控件、轴 、界面菜单、线、面、方、块、界面菜单、线、面、方、块、象、字、光。象、字、光。 每个具体对象都有一个每个具体对象都有一个“与生俱来与生俱来 、终生不变、终生不变”的独特的独特“身份身份”,即对象句柄。,即对象句柄。 根屏幕的句柄总是根屏幕的句柄总是数数字字0,图形窗的句柄总是正

95、整,图形窗的句柄总是正整数,其数,其余余对象的句柄则是双精度浮点对象的句柄则是双精度浮点数。数。(句柄图形树句柄图形树)88 图形对象的属性:所有对象都由一组属性来定义它们的特图形对象的属性:所有对象都由一组属性来定义它们的特征。属性由两部分组成:属性名和属性值。征。属性由两部分组成:属性名和属性值。 图形对象属性的设置和使用。图形对象属性的设置和使用。 句柄图形应用举例。句柄图形应用举例。 图形对象句柄的获得:图形对象句柄的获得: 函数函数 返回对象所有属性的当前值。返回对象所有属性的当前值。 函数函数 改变句柄图形改变句柄图形对象的属性。对象的属性。h=gcfget(h)set(h,col

96、or,0.5 0.4 0.3)figure(1)89(8)图形用户界面()图形用户界面(GUI)编程编程( ) 控件对象及属性。控件对象及属性。 现代的主流应用程序已经从命令行的交互方式转变为以图现代的主流应用程序已经从命令行的交互方式转变为以图形界面为主的交互方式,这主要是由于它给用户带来了操作形界面为主的交互方式,这主要是由于它给用户带来了操作和控制的方便与灵活性。和控制的方便与灵活性。MATLAB能够以比较简单的方式实能够以比较简单的方式实现一系列的图形界面功能。现一系列的图形界面功能。 控件对象是一类图形界面对象,控件对象是一类图形界面对象, MATLAB支持支持10种控件种控件对象:

97、坐标轴、静态文本框、可编辑文本框、弹式菜单、对象:坐标轴、静态文本框、可编辑文本框、弹式菜单、滚动条、框架、命令按钮、单选按钮、复选框、列表框。滚动条、框架、命令按钮、单选按钮、复选框、列表框。 用户用鼠标在控件对象上进行操作,单击鼠标时用户用鼠标在控件对象上进行操作,单击鼠标时 ,将会,将会使应用程序作出响应并执行某些预定的子程序。使应用程序作出响应并执行某些预定的子程序。 控件对象的属性分为两大类,笫一类是所有控件对象都具控件对象的属性分为两大类,笫一类是所有控件对象都具有的公共属性,笫二类是作为图形对象的属性。有的公共属性,笫二类是作为图形对象的属性。 创建控件对象的创建控件对象的MAT

98、LAB函数:函数:90 菜单对象及属性。菜单对象及属性。 M函数文件设计举例函数文件设计举例(略略)。 菜单对象(或称下拉式菜单对象)可以让用户在运行应用菜单对象(或称下拉式菜单对象)可以让用户在运行应用程序时,从一批功能选择项中浏览和选择某项功能。在程序时,从一批功能选择项中浏览和选择某项功能。在MATLAB图形窗口中图形窗口中 是默认主是默认主菜单,用户可以创建自己定义的菜单。菜单,用户可以创建自己定义的菜单。 在所有用户菜单属性中,最不可缺的属性是菜单名(在所有用户菜单属性中,最不可缺的属性是菜单名( )和回调()和回调( )。前者用于识别不同菜单项;后者用)。前者用于识别不同菜单项;后

99、者用于产生相应的操作,使该菜单项发挥应有的作用。于产生相应的操作,使该菜单项发挥应有的作用。 创建菜单对象的创建菜单对象的MATLAB函数:函数:(ENDEND)91句柄图形树句柄图形树返回返回Root根屏幕根屏幕Figure图形窗图形窗Uicontrol界面控件界面控件Axes轴轴Uimenu界面菜单界面菜单Line线线Surface面面Rectangle方方Patch块块Image象象Text字字Light光光92图图1 12 21MATLAB1MATLAB的结构框图的结构框图 返回返回93图图1 12 22 MATLAB Command Window2 MATLAB Command Window 返回返回94图图1 12 23 3正弦曲线正弦曲线 返回返回95图图1 12 24 4 正弦和余弦曲线正弦和余弦曲线 返回返回96图125 Plot()函数可选参数返回返回97图126分割波形图返回返回98

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号