《MATLAB简介及其基础》由会员分享,可在线阅读,更多相关《MATLAB简介及其基础(53页珍藏版)》请在金锄头文库上搜索。
1、 MATLAB编程与应用编程与应用任课教师任课教师 李建美李建美办公室办公室 南区八号楼南区八号楼-405电话电话 88395524Email 课程学时安排课程学时安排学时学时: 40学时学时安排:讲课安排:讲课28学时,上机学时,上机12学时学时学习内容学习内容一、一、MATLABMATLAB基础(基础(2020)二、二、MATLABMATLAB的应用(的应用(8 8)一、一、MATLABMATLAB概述概述二、二、MATLABMATLAB的数值运算功能的数值运算功能三、三、MATLABMATLAB中的计算结果可视化中的计算结果可视化三、三、MATLABMATLAB程序设计程序设计四、四、M
2、ATLABMATLAB的符号运算功能的符号运算功能五、五、SimulinkSimulink仿真初步仿真初步六、六、MATLABMATLAB的工具箱的工具箱七、七、MATLABMATLAB文件文件I/OI/O八、八、MATLABMATLAB的应用的应用具体内具体内容容第一章第一章 MATLAB概述概述(一)(一)MATLABMATLAB语言的发展语言的发展 MATLAB名字由名字由MATrix和和 LABoratory 两词的前三个字母两词的前三个字母组合而成。组合而成。20世纪七十年代,时任美国新墨西哥大学计算机科学系主任世纪七十年代,时任美国新墨西哥大学计算机科学系主任的的Cleve Mol
3、er出于减轻学生编程负担的动机,为学生设计了出于减轻学生编程负担的动机,为学生设计了一组调用一组调用LINPACK和和EISPACK矩阵软件工具包库程序的的矩阵软件工具包库程序的的“通俗易用通俗易用”的接口,此即用的接口,此即用FORTRAN编写的萌芽状态的编写的萌芽状态的MATLAB。MATLAB creator Cleve Moler 1984年年 由由 Cleve Moler、 Jack Little等等 合合 作作 成成 立立MathWorks公司,并把公司,并把MATLAB正式推向市场。正式推向市场。从这时起,从这时起,MATLAB的内核采用的内核采用C语言编写,而且除语言编写,而且
4、除原有的数值计算能力外,还新增了数据图视功能。原有的数值计算能力外,还新增了数据图视功能。Jack Little: President and Co-founder of The MathWorks Cleve Moler:Chief Scientist / Founder The MathWorks公司公司从从1984年成立,年成立,The MathWorks 已经逐步成为全球已经逐步成为全球科学科学计算计算和和基于模型设计基于模型设计的软件供应商的领导者。的软件供应商的领导者。The MathWorks总部位于马萨诸塞州的总部位于马萨诸塞州的Natick, 现在全球现在全球范围内拥有范围内
5、拥有2000多名员工(多名员工(http:/)The MathWorks 中国分公司位于北京,中国分公司位于北京,2007年成立年成立( http:/)The MathWorks总部大楼概貌现今的现今的matlab7.x拥有更丰富的数据类型和结构、更友善的面拥有更丰富的数据类型和结构、更友善的面向对象、更加快速精良的图形可视、更广博的数学和数据分析向对象、更加快速精良的图形可视、更广博的数学和数据分析资源、更多的应用开发工具。资源、更多的应用开发工具。自自MathWorks公司公司1993年推出年推出matlab4.0问世以来,问世以来,Matlab语言就成为了最具吸引力、应用最为广泛的科学计
6、算语言;语言就成为了最具吸引力、应用最为广泛的科学计算语言;1997年春,年春,matlab5.0版问世,紧接着是版问世,紧接着是5.1、5.2,以及,以及1999年春的年春的5.3版。版。2001年和年和2002年年mathworks公司又相继推出了强大的公司又相继推出了强大的matlab升级版本升级版本matlab6.0和和matlab6.5Matlab版本版本(二)(二)MATLABMATLAB语言的特点语言的特点1. 语言简洁紧凑,使用方便灵活,库函语言简洁紧凑,使用方便灵活,库函数极其丰富数极其丰富 MATLAB程序书写形式自由,利用起丰富的库函程序书写形式自由,利用起丰富的库函数避
7、开繁杂的子程序编程任务,压缩了一切不必要的数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。由于库函数都由本领域的专家编写,用户编程工作。由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。可以说,用不必担心函数的可靠性。可以说,用MATLAB进行科进行科技开发是站在专家的肩膀上。技开发是站在专家的肩膀上。 2. 运算符丰富运算符丰富由于由于MATLAB是用是用C语言编写的,语言编写的,MATLAB提供了和提供了和C语言几乎一样多的运算符,灵活使用语言几乎一样多的运算符,灵活使用MATLAB的运的运算符将使程序变得极为简短。算符将使程序变得极为简短。 3. MATLAB既具有结构化
8、的控制语句既具有结构化的控制语句(如(如for循环,循环,while循环,循环,break语句和语句和if语句),又有面向对象编程的特性。语句),又有面向对象编程的特性。 4. 程序限制不严格,程序设计自由度大程序限制不严格,程序设计自由度大例如,在例如,在MATLAB里,用户无需对矩阵里,用户无需对矩阵预定义就可使用。预定义就可使用。 5. 程序的可移植性很好,基本上不做修程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系改就可以在各种型号的计算机和操作系统上运行。统上运行。 6. MATLAB的图形功能强大的图形功能强大在在FORTRAN和和C语言里,绘图都很不容语言里,绘
9、图都很不容易,但在易,但在MATLAB里,数据的可视化非里,数据的可视化非常简单。常简单。MATLAB还具有较强的编辑图还具有较强的编辑图形界面的能力。形界面的能力。 7. 功能强大的工具箱是功能强大的工具箱是MATLAB的另一特色的另一特色MATLAB工具箱包含两个部分:工具箱包含两个部分: 核心部分:核心部分:有数百个核心内部函数有数百个核心内部函数 各种可选的工具箱各种可选的工具箱 工具箱又分为两类:工具箱又分为两类:功能性工具箱功能性工具箱 学科性工具箱学科性工具箱功能性工具箱功能性工具箱主要用来扩充其符号计算功能、图示建模仿真功主要用来扩充其符号计算功能、图示建模仿真功能、文字处理功
10、能以及与硬件实时交互功能,功能性工具箱用能、文字处理功能以及与硬件实时交互功能,功能性工具箱用于多种学科。于多种学科。学科性工具箱学科性工具箱是专业性比较强的,面向专门的学科领域。如是专业性比较强的,面向专门的学科领域。如control toolbox, signl proceessing toolbox, commumnication toolbox等。这些工具箱都是由该领域内学术水平很高的专家等。这些工具箱都是由该领域内学术水平很高的专家编写的,所以用户无需编写自己学科范围内的基础程序,而可编写的,所以用户无需编写自己学科范围内的基础程序,而可直接进行高、精、尖的研究。直接进行高、精、尖的
11、研究。目前目前MathWorks 已经开发了已经开发了80多种面向不同专门学科多种面向不同专门学科领域的工具箱,诸如:领域的工具箱,诸如:符号数学工具箱符号数学工具箱SIMULINK仿真工具箱仿真工具箱控制系统工具箱控制系统工具箱信号处理工具箱信号处理工具箱图像处理工具箱图像处理工具箱通讯工具箱通讯工具箱系统辨识工具箱系统辨识工具箱小波分析工具箱小波分析工具箱神经元网络工具箱神经元网络工具箱金融工具箱金融工具箱 举例:控制系统工具箱中的 RLC 电路响应(时域和频域)8. 源程序的开放性源程序的开放性开放性也许是开放性也许是MATLAB最受人们欢迎的最受人们欢迎的特点。特点。除内部函数以外,所
12、有除内部函数以外,所有MATLAB的核心的核心文件和工具箱文件都是可读可改的源文文件和工具箱文件都是可读可改的源文件,用户可通过对源文件的修改以及加件,用户可通过对源文件的修改以及加入自己的文件构成新的工具箱。入自己的文件构成新的工具箱。9. MATLAB的缺点的缺点 和其他高级程序相比,程序的执行速和其他高级程序相比,程序的执行速度较慢。由于度较慢。由于MATLAB的程序不用编译的程序不用编译等预处理,也不能生成可执行文件,程等预处理,也不能生成可执行文件,程序为解释执行,所以速度较慢。序为解释执行,所以速度较慢。 (三)(三)MATLABMATLAB语言的功能语言的功能强大的数值(矩阵)运
13、算功能强大的数值(矩阵)运算功能广泛的符号运算功能广泛的符号运算功能计算结果的可视化功能计算结果的可视化功能可靠的容错功能可靠的容错功能应用灵活的兼容与接口功能应用灵活的兼容与接口功能信息量丰富的联机检索功能信息量丰富的联机检索功能1. 矩阵运算功能矩阵运算功能MATLAB提供了丰富的矩阵运算处理功能,是提供了丰富的矩阵运算处理功能,是基于矩阵运算的处理工具。基于矩阵运算的处理工具。变量变量 矩阵,运算矩阵,运算 矩阵的运算矩阵的运算例如例如 C = A + B ,A,B,C都是矩阵都是矩阵,是矩阵的加是矩阵的加运算运算即使一个常数,即使一个常数,Y=5,MATLAB也看做是一个也看做是一个1
14、 1的矩阵的矩阵2. 符号运算功能符号运算功能符号运算即用字符串进行数学分析符号运算即用字符串进行数学分析允许变量不赋值而参与运算允许变量不赋值而参与运算用于解代数方程、微积分、复合导数、积分、用于解代数方程、微积分、复合导数、积分、二重积分、有理函数、微分方程、泰乐级数展二重积分、有理函数、微分方程、泰乐级数展开、寻优等等,可求得解析符号开、寻优等等,可求得解析符号解解举例:符号计算示例举例:符号计算示例(1)微分求解:)微分求解: diff(x3) ans =3*x2(2)积分求解:)积分求解: int(x3) ans = 1/4*x4(3)方程求解:)方程求解: x = solve(a*
15、x2 + b*x + c = 0) x =1/2/a*(-b+(b2-4*a*c)(1/2) 1/2/a*(-b-(b2-4*a*c)(1/2) (4)多项式展开)多项式展开 expand(a+b)3) ans= a3+3*a2*b+3*a*b2+b33.丰富的绘图功能与计算结果的可视化丰富的绘图功能与计算结果的可视化具有高层绘图功能具有高层绘图功能两维、三维绘图两维、三维绘图具有底层绘图功能具有底层绘图功能句柄绘图句柄绘图实例:绘制实例:绘制matlab图标图标load logosurf(L,R),colormap(M),N=length(L(:,1)4.图形化程序编制功能图形化程序编制功能
16、动态系统进行建模、仿真和分析的软件包动态系统进行建模、仿真和分析的软件包用结构图编程,而不用程序编程用结构图编程,而不用程序编程只需拖几个方块、连几条线,即可实现编程功只需拖几个方块、连几条线,即可实现编程功能能实例:建立一个模型,将正弦信号输出到实例:建立一个模型,将正弦信号输出到示波器中。示波器中。非法操作时,给出提示,并不影响其操作非法操作时,给出提示,并不影响其操作1/0Warning: Divide by zeroans = Inf5.MATLAB的容错功能的容错功能6.MATLAB的兼容功能的兼容功能可与可与C语言、语言、FORTURE语言跨平台兼容语言跨平台兼容用函数用函数CME
17、X、FMEX实现实现7.强大的联机检索帮助功能强大的联机检索帮助功能可随时检索可随时检索matlab函数函数可随时查询可随时查询matlab函数的使用方法函数的使用方法 (四)(四)MATLABMATLAB语言系统的组成语言系统的组成MTALAB系统由五个主要部分组成系统由五个主要部分组成1. MATALB语言体系语言体系 高层次的矩阵数组语言高层次的矩阵数组语言 具有条件控制、函数调用、数据结构、输入输出、面向具有条件控制、函数调用、数据结构、输入输出、面向对象等程序语言特性。对象等程序语言特性。 2.MATLAB工作环境工作环境 包括管理工作空间中的变量数据输入输出的方式和方法,包括管理工
18、作空间中的变量数据输入输出的方式和方法, 以及开发、调试、管理以及开发、调试、管理M文件的各种工具。文件的各种工具。3. 图形句相系统图形句相系统 这是这是MATLAB图形系统的基础,包括完成图形系统的基础,包括完成2D和和3D数据图示、数据图示、 图像处理、动画生成、图形显示等功能的高层图像处理、动画生成、图形显示等功能的高层MATLAB命令,命令,以及开发以及开发GUI应用程序的各种工具。应用程序的各种工具。4. MATLAB数学函数库数学函数库 这是对这是对MATLAB使用的各种数学算法的总称使用的各种数学算法的总称包括各种初等函数的算法,也包括矩阵运算、包括各种初等函数的算法,也包括矩
19、阵运算、矩阵分析等高层次数学算法。矩阵分析等高层次数学算法。 5. MATLAB应用程序接口应用程序接口(API) 这是这是MATLAB为用户提供的一个函数库,使得用户能够在为用户提供的一个函数库,使得用户能够在MATLAB环境中使用环境中使用C程序或程序或FORTRAN程序,包括从程序,包括从MATLAB中调用程序中调用程序(动态链接动态链接),读写,读写MAT文件的功能。文件的功能。MATLAB是一个集数值计算、图形管理、程序开发是一个集数值计算、图形管理、程序开发为一体的环境。为一体的环境。 加上加上MATLAB更强的功能扩展能力,更强的功能扩展能力,与它的主系统一起,构成一个功能更加强
20、大的系统与它的主系统一起,构成一个功能更加强大的系统(五)(五)MATLABMATLAB语言的应用语言的应用1.在欧美大学在欧美大学2. 诸诸如如应应用用代代数数、数数理理统统计计、自自动动控控制制、数数字字信信号号处处理理、模模拟拟与与数数字字通通信信、时时间间序序列列分分析析、动动态态系系统统仿仿真真等等课课程程的的教教科科书书都都把把MATLAB作作为为内内容容。这这几几乎乎成成了了九九十十年年代代教教科科书书与与旧旧版版书书籍籍的的区区别别性性标标志志。MATLAB成成为为攻攻读读学学位位的的大大学学生生、硕士生、博士生必须掌握的基本工具。硕士生、博士生必须掌握的基本工具。2. 在国际
21、学术界在国际学术界 MATLAB已经被确认为准确、可靠的科学计算标准软件。已经被确认为准确、可靠的科学计算标准软件。在在许许多多国国际际一一流流学学术术刊刊物物上上(尤尤其其是是信信息息科科学学刊刊物物),都都可可以以看到看到MATLAB的应用。的应用。3. 在设计研究单位和工业部门在设计研究单位和工业部门 MATLAB被认作进行高效研究、开发的首选软件工具。被认作进行高效研究、开发的首选软件工具。Mathworks网站资料:网站资料: MathWorks 的的客客户户是是世世界界各各大大洲洲100多多个个国国家家的的1,000,000多多名名顶顶级级技技术术人人员员。这这些些技技术术人人员员
22、工工作作在在世世界界上上最最先先进进的的技技术术公公司司,政政府府实实验验室室,金金融融机机构构,以以及及3500多多所所大大学学。他他们们依依赖赖于于MathWorks的的产产品品和和服服务务,因因为为MATLAB 和和 Simulink 已已经经成成为为他他们们进进行行工工程程项项目目和科学研究和科学研究的基本工具。的基本工具。(六)(六) MATLAB 7.3MATLAB 7.3的开发环境的开发环境历史命令窗口历史命令窗口工工作作空空间间窗窗口口/当当前目录浏览器窗口前目录浏览器窗口开始按钮开始按钮命令窗口命令窗口MATLAB菜单菜单MATLAB工具栏工具栏1. 菜单菜单MATLAB 7
23、.3还会根据不同的窗口,增加一些浮动菜单。还会根据不同的窗口,增加一些浮动菜单。 (1)File菜单菜单(2)Edit菜单菜单(3)Debug菜单菜单(4)Desktop菜单菜单(5)Windows菜单菜单(6)Help菜单菜单(7)开始菜单)开始菜单在在MATLAB操作界面的左下角有一个按钮,是操作界面的左下角有一个按钮,是MATLAB的快捷菜单。的快捷菜单。开始菜单中显示的为现场菜单,包括交互界面窗口的列表,开始菜单中显示的为现场菜单,包括交互界面窗口的列表,快捷方式和常用的子菜单项,可通过快捷方式和常用的子菜单项,可通过start菜单查阅菜单查阅MATLAB包含的各种资源。包含的各种资源
24、。 2. 工具栏工具栏工具栏是在编程环境下提供的对常用命令工具栏是在编程环境下提供的对常用命令的快速访问,当鼠标停留在工具栏的按钮的快速访问,当鼠标停留在工具栏的按钮上时,就会显示出该按钮的功能。上时,就会显示出该按钮的功能。后退后退New M-FileProfilerOpen FileGUIDEHelpSimulink当前路径当前路径3.通用窗口通用窗口 MATLAB 7.3工作界面中的常用窗口包括工作界面中的常用窗口包括命令窗口(命令窗口(command window)历史命令窗口(历史命令窗口(command history)当前工作目录窗口(当前工作目录窗口(current direc
25、tory)工作空间浏览器窗口(工作空间浏览器窗口(workspace browser)变量编辑窗口变量编辑窗口M文件编辑调试窗口文件编辑调试窗口帮助窗口和程序性能剖析窗口等。帮助窗口和程序性能剖析窗口等。所有窗口都可以单独显示,所有窗口都可以单独显示, 使用使用Undock 和和Dock 可使可使窗口单独出来和返回到窗口单独出来和返回到MATLAB工作界面中。工作界面中。3.1 命令窗口(命令窗口(command window)Matlab的主要操作界面,大部分操作命令和结果在此的主要操作界面,大部分操作命令和结果在此进行进行菜单栏菜单栏Matlab7.0版比版比6.5版增加了版增加了debu
26、g(编译(编译m文件)文件)和和desktop(界面置放模式)(界面置放模式) 减少了减少了view命令提示符命令提示符 显示方式显示方式 字体、大小、颜色设置字体、大小、颜色设置 files/preferences命令窗口常用控制指令命令窗口常用控制指令也可以利用菜单命令实现也可以利用菜单命令实现例如:例如:dir d:MyProg%显示显示d:MyP rog目录下的文件清单目录下的文件清单edit d:MyProgexm013_9.m %打开编辑器编辑打开编辑器编辑exm013_9.mwhich exm013_9.m %指出指出exm013_9.m所在的目录所在的目录指 令含 义指 令含
27、义cd设置当前工作目录exit/quit退出MATLABclf清除图形窗open打开文件clc清除指令窗中显示的内容md创建目录clear清除内存变量more使显示内容分页显示dir列出指定目录的文件清单type显示M文件的内容edit打开M文件编辑器which指出文件所在目录3.2 历史命令窗口(历史命令窗口(command history)记录用户在记录用户在Matlab命令窗口中输入的所有的命令命令窗口中输入的所有的命令包括每次启动包括每次启动Matlab的时间和每次启动所有的命的时间和每次启动所有的命令行令行对历史命令的编辑(复制对历史命令的编辑(复制/运行运行/创建创建m文件文件/快
28、捷快捷方式方式/profile code)利用命令来创建利用命令来创建“日志日志”来记录历史命来记录历史命令令diary例:例: diary first_diary%输入复数输入复数z1=10+5i;z2=5+9i;z3=6;a=z1,z2,z3 diary offWork 目录下目录下/所有文件中打开所有文件中打开first_diary (默认路径,可修改)(默认路径,可修改)3.3 当前目录窗口(当前目录窗口(current directory)当前目录浏览器管理当前目录浏览器管理Matlab中大量的函数和数中大量的函数和数据库据库包括菜单栏、当前目录设计区,工具菜单和文包括菜单栏、当前目
29、录设计区,工具菜单和文件详细菜单件详细菜单对文件详细菜单区域中文件可以方便地进行编对文件详细菜单区域中文件可以方便地进行编辑或运行辑或运行如何设置当前目录呢?如何设置当前目录呢?启动启动Matlab时,默认路径为时,默认路径为 MATLAB701workWindows 创建目录,可以自动添加创建目录,可以自动添加 Files/ set path 利用利用path命令来查看命令来查看matlab的路径信息的路径信息3.4 工作空间浏览器(工作空间浏览器(workspace browser)保存内存变量,从而可以方便地对其进保存内存变量,从而可以方便地对其进行查阅和编辑等等行查阅和编辑等等 (双击
30、双击浏览数组编辑浏览数组编辑器或器或右键右键其他编辑)其他编辑)可在命令窗口利用操作命令在查阅和删可在命令窗口利用操作命令在查阅和删除内存变量除内存变量 内存变量的操作命令内存变量的操作命令1. 内存变量的查阅、删除内存变量的查阅、删除1)who,whos指令查询内存变量指令查询内存变量who指令获取当前所有内存变量的名称列表。指令获取当前所有内存变量的名称列表。 whos指令获取详细的内存变量列表,包含变量类型、指令获取详细的内存变量列表,包含变量类型、大小等信息。大小等信息。2)clear 指令删除内存变量指令删除内存变量clear指令清除所有内存变量指令清除所有内存变量clear v1
31、v2清除内存变量清除内存变量v1 v2,被删变量间用空格被删变量间用空格分隔分隔3)打开)打开工作空间浏览器工作空间浏览器( WorkSpace ),可以看到所可以看到所有内存变量的详细说明,有内存变量的详细说明,和和whos指令效果相同。并指令效果相同。并且可以通过右键点击变量引出现场菜单,对该变量且可以通过右键点击变量引出现场菜单,对该变量进行编辑、删除、重命名、保存、绘图等操作。进行编辑、删除、重命名、保存、绘图等操作。2. 数据文件的存取数据文件的存取1) 利用指令利用指令save、load实现数据文件实现数据文件(*.mat)的存取。的存取。save/load filename%保存
32、保存/打开文件打开文件filename.matsave/load filename v1 v2%保存保存/打开变量打开变量v1 v22) 打开工作空间浏览器打开工作空间浏览器 (WorkSpace),可以在右键现可以在右键现场菜单中选择场菜单中选择Save Workspace as保存所有内存变量,保存所有内存变量,或或Save Selection as保存指定变量。保存指定变量。例例 a=1 2 3;4 5 6;7 8 9;%输入一个输入一个3*3数组数组a b=This is a test;%输入一个字符串数组输入一个字符串数组 c=3;d=0.2; whoYour variables a
33、re:a b c d whos Name Size Bytes Class a 3x3 72 double array b 1x14 28 char array c 1x1 8 double array d 1x1 8 double arrayGrand total is 25 elements using 116 bytes clear c save filename a b clear load filename whoYour variables are:a b 3.5 数组编辑器数组编辑器MATLAB提供专门的数组编辑器来编辑数组提供专门的数组编辑器来编辑数组(双击或右键)(双击或右键
34、)用户可以在数组编辑器中直接编辑该变量用户可以在数组编辑器中直接编辑该变量(七)(七)MATLAB7.0MATLAB7.0的帮助系统的帮助系统纯文本帮助纯文本帮助 在在MATLAB中,所有执行命令或者函中,所有执行命令或者函数的数的M源文件都有详细的注释,用纯文源文件都有详细的注释,用纯文本的形式来表示的,一般包括函数的条本的形式来表示的,一般包括函数的条用格式或输入参数、输出结果的含义等用格式或输入参数、输出结果的含义等等等7.2联机查询功能联机查询功能两种方式:两种方式: helpwin指令指令 help帮助命令帮助命令7.1 基本帮助指令基本帮助指令 在工作窗口输入:在工作窗口输入: h
35、elpwin 显示帮助窗口;显示帮助窗口; helpdesk 显示显示html格式的帮助内容格式的帮助内容 demo 显示显示Matlab Demo Window的窗口,的窗口,选择感兴趣的内容进行演示选择感兴趣的内容进行演示2.lookfor指令指令 help需要事先知道函数准确的名字,如果不能确定需要事先知道函数准确的名字,如果不能确定时,可用时,可用lookfor +完整或不完整的关键词,进行搜索完整或不完整的关键词,进行搜索如:如: lookfor fft ;检索出各种与傅立叶有关的函数;检索出各种与傅立叶有关的函数help帮助命令:帮助命令:1. Help 指令指令+待查询的函数待查询的函数 命令窗口输入:命令窗口输入:help exp 得到指数函数命令的详得到指数函数命令的详 细信息细信息 help sum 加法函数加法函数