MATLAB 2020中文版从入门到精通
人民邮电出版社
北京
图书在版编目(CIP)数据
MATLAB 2020中文版从入门到精通/槐创锋,郝勇编著.--北京:人民邮电出版社,2021.3
ISBN 978-7-115-55085-9
Ⅰ.①M… Ⅱ.①槐…②郝… Ⅲ.①Matlab软件 Ⅳ.①TP317
中国版本图书馆CIP数据核字(2020)第203777号
◆编著 槐创锋 郝勇
责任编辑 张天怡
责任印制 王郁 陈犇
◆人民邮电出版社出版发行 北京市丰台区成寿寺路11号
邮编 100164 电子邮件 315@ptpress.com.cn
网址 https://www.ptpress.com.cn
三河市祥达印刷包装有限公司印刷
◆开本:787×1092 1/16
印张:24 2021年3月第1版
字数:635千字 2021年3月河北第1次印刷
定价:79.80元
读者服务热线:(010)81055410 印装质量热线:(010)81055316
反盗版热线:(010)81055315
广告经营许可证:京东市监广登字20170147号
全书以MATLAB 2020为基础,结合高等学校的教学任务和计算科学的应用,详细讲解了数学计算和仿真分析的各种方法和技巧,力争让学生与零基础读者最终脱离书本,将所学知识应用于工程实践中。
本书主要内容包括MATLAB基础知识,程序设计基础,二维图形、三维图形绘制,图像绘制,数列、级数与极限计算,符号运算,积分计算,微分方程,图形用户界面设计,Simulink仿真基础, MATLAB联合编程,优化设计,供应中心选址设计实例,数字低通信号频谱分析设计实例,函数最优化解设计实例等。本书内容覆盖数学计算与仿真分析的各个方面,既有MATLAB基本函数的介绍,又有用MATLAB编写的计算程序,以及利用函数解决不同数学应用问题的方案等。
本书既可作为MATLAB初学者的入门用书,又可作为相关工程技术人员、大学生、研究生的工具书。
MATLAB是美国Math Works公司出品的一个优秀的数学计算软件,其强大的数值计算能力和数据可视化能力令人震撼。经过多年的发展,MATLAB已经到了2020a版本,功能日趋完善并且成为多种学科必不可少的计算工具,成为自动控制、应用数学、信息与计算科学等专业大学本科生与研究生需要掌握的基本操作软件。
目前,MATLAB已经得到了很大程度的普及,它不仅成为各大公司和科研机构的专用软件,在各高校中同样也受到追捧。越来越多的学生借助MATLAB来学习数学分析、图像处理、仿真分析。
为了帮助零基础读者快速掌握MATLAB的使用方法,本书从基础知识着手,对MATLAB的基本函数功能进行了详细介绍,同时根据不同学科读者的需求,对MATLAB的数学计算、图形绘制、仿真分析、最优化设计和外部接口编程等不同功能和应用进行了细致讲解,让读者入宝山而满载归。
一、本书特色
市面上的MATLAB书籍浩如烟海,读者要挑选一本自己中意的书反而很困难,真是“乱花渐欲迷人眼”。那么,本书为什么能够在您“众里寻他千百度”之际,于“灯火阑珊”中让您“蓦然回首”呢?那是因为本书有以下五大特色。
作者实力雄厚
本书由著名CAD/CAM/CAE图书出版专家胡仁喜博士指导,大学资深专家教授团队执笔编写。作者总结自己多年的设计经验及教学心得体会,力求在本书中全面细致地展现MATLAB在工程分析与数学计算应用领域的各种功能和使用方法。
实例专业典型
本书中的很多实例本身就是工程分析与数学计算项目案例,这些案例经过作者的精心提炼和改编,不仅保证了读者能够学好知识点,更重要的是能帮助读者掌握实际的操作技能。
注重实操技能
本书从全面提升读者的MATLAB工程分析与数学计算能力角度出发,结合大量的案例来讲解如何利用MATLAB进行工程分析与数学计算,让读者真正掌握计算机辅助工程分析与数学计算。
内容全面深入
“秀才不出门,能知天下事”,读者只要有本书在手,MATLAB数学计算与工程分析知识便能全精通。本书不仅有透彻的讲解,还有丰富的实例供读者演练,能够帮助读者找到一条学习MATLAB的终南捷径。
实现知行合一
本书提供了使用MATLAB解决数学问题的实践性指导,它基于MATLAB 2020a版本,内容由浅入深,特别是对每一条命令的调用格式都做了详细的说明,并为读者提供了大量的例题,这对于初学者自学很有帮助。本书还对数学中的一些知识如优化理论与算法问题、数理统计问题等各种数学问题进行了较为详细的介绍,因此,本书也可作为科技工作者的科学计算工具书。
二、电子资料使用说明
本书除利用传统的纸面讲解外,还随书配送了电子资料包,主要包含全书讲解实例和练习实例的源文件,全程实例同步视频。通过扫描封底二维码,下载本书实例的同步视频,读者可以随心所欲,像看电影一样轻松愉悦地学习本书。
三、致谢
本书由华东交通大学教材基金资助,华东交通大学槐创锋和郝勇主编,林凤涛、沈晓玲、朱爱华、黄志刚、钟礼东参与部分章节编著,闫聪聪、刘昌丽、康士廷、杨雪静、李兵、宫鹏涵、孙立明等参与部分章节的内容整理,石家庄三维书屋文化传播有限公司胡仁喜博士对全书进行了审校,在此对他们的付出表示感谢。
读者在学习本书的过程中若发现错误,可发邮件至zhangtianyi@ptpress.com.cn,编者将不胜感激。欢迎加入三维书屋EDA图书学习交流群(QQ:656116380)交流探讨,也可以在本交流群索取本书配套资源。
编者
2020年4月
内容指南
MATLAB是Matrix Laboratory(矩阵实验室)的缩写。它是以线性代数软件包(LINPACK)和特征值计算软件包(EISPACK)中的子程序为基础发展起来的一种开放式程序设计语言,是一种高性能的工程计算语言,其基本的数据单位是没有维数限制的矩阵。本章主要介绍MATLAB的发展历程、MATLAB的工作界面、MATLAB的基本功能,从而使读者了解MATLAB的基本命令。
知识重点
● MATLAB中的科学计算概述
● MATLAB 2020的工作界面
● MATLAB命令的组成
● M文件
MATLAB是一种功能非常强大的科学计算软件。在正式使用MATLAB之前,我们应该对它有一个整体的认识。
MATLAB的命令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解决问题要比用仅支持标量的非交互式的编程语言(如C、FORTRAN等语言)简捷得多,尤其是在解决包含了矩阵和向量的工程技术问题时。在大学中,MATLAB是很多数学类、工程类和科学类的初等和高等课程的标准指导工具。在工业上,MATLAB是产品研究、开发和分析过程中经常采用的工具。
20世纪70年代中期,克里夫·莫勒尔(Cleve Moler)博士及其同事在美国国家科学基金的资助下开发了调用EISPACK和LINPACK的FORTRAN子程序库。EISPACK是求解特征值的程序库,LINPACK是求解线性方程的程序库。当时,这两个程序库代表矩阵运算的最高水平。
20世纪70年代后期,时任美国新墨西哥大学计算机科学系主任的莫勒尔教授在给学生讲授线性代数课程时,想教学生使用EISPACK和LINPACK程序库,但他发现学生用FORTRAN编写接口程序很费时间。出于减轻学生编程负担的目的,他为学生设计了一组调用LINPACK和EISPACK程序库的“通俗易用”的接口,即用FORTRAN编写的萌芽状态的MATLAB。在此后的数年里,MATLAB在多所大学里作为教学辅助软件使用,并作为面向大众的免费软件广为流传。
1983年,莫勒尔教授、工程师约翰·利特尔(John Little)和斯蒂夫·班格尔特(Steve Bangert)一起用C语言开发了第二代专业版MATLAB,使MATLAB同时具备了数值计算和数据可视化(图形化)的功能。
1984年,莫勒尔和利特尔成立了Math Works公司,正式把MATLAB推向市场,并继续进行MATLAB的研究和开发。从这时起,MATLAB的内核采用C语言编写。
1993年,Math Works公司推出MATLAB 4.0,从此告别DOS版。MATLAB 4.x在继承和发展其原有的数值计算和数据可视化的同时,出现了几个重要变化:推出了交互式操作的动态系统建模、仿真、分析集成环境——Simulink;开发了与外部进行直接数据交换的组件,打通了MATLAB进行实时数据分析、处理和硬件开发的道路;推出了符号计算工具包;构造了Notebook。
1997年,MATLAB 5.0问世,紧接着是MATLAB 5.1、MATLAB 5.2,以及1999年的MATLAB 5.3。2003年,MATLAB 7.0问世。与以往的版本相比,现在的MATLAB拥有更丰富的数据类型和结构、更友善的面向对象的开发环境、更快速精良的数据可视化界面、更广博的数学和数据分析资源、更多的应用开发工具。
2006年,MATLAB分别在3月和9月进行了两次产品发布,3月发布的版本被称为“a”,9月发布的版本被称为“b”,即R2006a和R2006b。之后,MATLAB分别在每年的3月和9月进行两次产品发布,每次发布都涵盖产品家族中的所有模块,包含已有产品的新特性和错误(bug)修订,以及新产品的发布。
2020年3月,Math Works正式发布了R2020a版MATLAB(以下简称MATLAB 2020)和Simulink产品系列的Release 2020(R2020)版本。
MATLAB系统主要包括以下5个部分。
(1)桌面工具和开发环境:MATLAB由一系列工具组成,这些工具大部分是图形用户界面,方便用户使用MATLAB的函数和文件,包括MATLAB桌面和命令行窗口,编辑器和调试器,代码分析器和用于浏览帮助、工作空间、文件的浏览器。
(2)数学函数库:MATLAB数学函数库包括了大量的计算算法,从初等函数(如加法、正弦、余弦等)到复杂的高等函数(如矩阵求逆、矩阵特征值、贝塞尔函数和快速傅里叶变换等)。
(3)语言:MATLAB是一种高级的基于矩阵/数组的语言,具有程序流控制、函数、数据结构、输入/输出和面向对象编程等特色。用户可以在命令行窗口中将输入语句与执行命令同步,以迅速创立快速抛弃型程序,也可以先编写一个较大的复杂的M文件后再一起运行,以创立完整的大型应用程序。
(4)图形处理:MATLAB具有应用方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。它的高级作图功能包括二维和三维的可视化、图像处理、动画和表达式作图;低级别作图功能包括完全定制图形的外观,以及建立基于用户的MATLAB应用程序的完整图形用户界面。
(5)外部接口:外部接口是一个使MATLAB能与C语言、FORTRAN等其他高级编程语言进行交互的函数库,它包括从MATLAB中调用程序(动态链接)、调用MATLAB为计算引擎和读写mat文件的设备。
本节通过介绍MATLAB 2020的工作界面,使读者初步认识MATLAB 2020的主要窗口,并掌握其操作方法。
第一次使用MATLAB 2020,将进入其默认设置的工作界面,如图1-1所示。
MATLAB 2020的工作界面形式简洁,主要由标题栏、功能区、工具栏、当前文件夹窗口、命令行窗口、工作区窗口和命令历史记录窗口等组成。
本书使用的MATLAB版本为2020版,在图1-1所示的工作界面左上角显示的是标题栏,如图1-2所示。
在工作界面右上角显示了3个图标按钮,其中,单击按钮,将最小化显示工作界面;单击
按钮,将最大化显示工作界面;单击
按钮,将关闭工作界面。
在命令行窗口中输入“exit”或“quit”命令,或使用快捷键“Alt+F4”,同样可以关闭MATLAB。
MATLAB 2020有别于传统的菜单栏形式,以功能区的形式显示应用命令。将所有的功能命令分类别放置在3个选项卡中,下面分别介绍这3个选项卡。
1.“主页”选项卡
单击标题栏下方的“主页”选项卡,显示基本的“新建脚本”“新建变量”等命令,如图1-3所示。
2.“绘图”选项卡
单击标题栏下方的“绘图”选项卡,显示关于图形绘制的编辑命令,如图1-4所示。
3.“APP”(应用程序)选项卡
单击标题栏下方的“APP”选项卡,显示多种应用程序命令,如图1-5所示。
功能区右侧及下方是工具栏,工具栏以图标按钮的方式汇集了常用的操作命令。下面简要介绍工具栏中部分常用按钮的功能。
:保存M文件。
、
、
:剪切、复制或粘贴已选中的对象。
、
:撤销或恢复上一次操作。
:切换窗口。
:打开MATLAB帮助系统。
:向前、向后、向上一级、浏览路径文件夹。
:当前路径设置栏。
MATLAB的使用方法和界面有多种形式,但命令行窗口的命令操作是最基本的,也是读者在入门时首先要掌握的。
1.基本界面
MATLAB命令行窗口的基本表现形态和操作方式如图1-6所示。在该窗口中用户可以进行各种计算操作,也可以使用命令打开各种MATLAB工具,还可以查看各种命令的帮助说明等。
2.基本操作
在命令行窗口的右上角,用户可以单击相应的按钮进行最大化、还原或关闭窗口等操作。单击右上角的按钮,出现一个下拉菜单,如图1-7所示。在该下拉菜单中,单击“
最小化”按钮,可将命令行窗口最小化到主窗口左侧,以页签形式存在,当鼠标指针移到上面时,显示窗口内容。此时单击
下拉菜单中的
按钮,即可恢复显示。
选择“页面设置”命令,弹出图1-8所示的“页面设置:命令行窗口”对话框。该对话框中包括3个选项卡,分别用于对命令行窗口中文字的布局、标题、字体进行设置。
(1)“布局”选项卡:如图1-8所示,用于设置文本的打印对象及打印颜色。
(2)“标题”选项卡:如图1-9所示,用于对打印的页码及布局进行设置。
(3)“字体”选项卡:如图1-10所示,可选择使用当前命令行中的字体,也可以进行自定义设置,在下拉列表中选择字体名称及字体大小。
3.快捷操作
选择该窗口中的命令,单击鼠标右键即可弹出图1-11所示的快捷菜单,选择其中的命令,即可进行对应操作。
下面介绍几种常用命令。
(1)执行所选内容:对选中的内容进行操作。
(2)打开所选内容:执行该命令,找到所选内容所在的文件,并在命令行窗口显示该文件中的内容。
(3)关于所选内容的帮助:执行该命令,弹出关于所选内容的相关帮助窗口,如图1-12所示。
(4)函数浏览器:执行该命令,弹出图1-13所示的函数窗口,在该窗口中可以选择编程所需的函数,并对该函数进行安装。
(5)剪切:剪切选中的文本。
(6)复制:复制选中的文本。
(7)粘贴:粘贴选中的文本。
(8)全选:将该文件中显示在命令行窗口的文本全部选中。
(9)查找:执行该命令后,弹出“查找”对话框,如图1-14所示。在该对话框的“查找内容”文本框中输入要查找的文本关键词,即可在庞大的命令历史记录中迅速定位所需对象的位置。
(10)清空命令行窗口:删除命令行窗口中显示的所有命令程序。
命令历史记录窗口主要用于记录所有执行过的命令。在默认条件下,它会保存自安装以来所有运行过的命令的历史记录,并记录运行时间,以方便查询。
选择“命令历史记录”→“停靠”命令,如图1-15所示,在显示界面上固定显示命令历史记录窗口,如图1-16所示。
在命令历史记录窗口中双击某一命令,命令行窗口将执行该命令。
当前文件夹窗口如图1-17所示,可显示或改变当前文件夹,查看当前文件夹下的文件。
单击按钮,在弹出的下拉菜单中可以选择常用的操作,例如,在当前文件夹下新建文件或文件夹(还可以指定新建文件的类型)、生成文件分析报告、查找文件、显示/隐藏文件信息、将当前文件夹按某种指定方式排序和分组等。图1-18所示是对当前文件夹中的代码进行分析,提出一些程序优化建议并生成报告。
在MATLAB中包含搜索路径的设置命令,下面进行介绍。
(1)在命令行窗口中输入“path”,按“Enter”键,在命令行窗口中显示图1-19所示的目录。
(2)在命令行窗口中输入“pathtool”,弹出“设置路径”对话框,如图1-20所示。
单击“添加文件夹”按钮,进入文件夹浏览对话框,可以把某一目录下的文件包含进搜索范围而忽略子目录。
单击“添加并包含子文件夹”按钮,进入文件夹浏览对话框,将子目录也包含进来。建议选择后者以避免一些可能的错误。
>> a=2 a = 2 >> b=5 b = 5
工作区可以显示目前内存中所有的MATLAB变量名、数据结构、字节数与类型。不同的变量类型有不同的变量名图标。
在命令行窗口输入下面的程序。
上面的语句表示在MATLAB中创建了变量a、b,并给变量赋值,同时将整个语句保存在计算机的一段内存中,也就是工作区中,如图1-21所示。
“主页”选项卡(见图1-1)是MATLAB一个非常重要的数据分析与管理窗口。它的主要按钮功能如下。
“新建脚本”按钮:新建一个M文件。
“新建实时脚本”按钮:新建一个实时脚本,如图1-22所示。
“打开”按钮:打开所选择的数据对象。单击该按钮之后,进入图1-23所示的数组编辑窗口,在这里可以对数据进行各种编辑操作。
“导入数据”按钮:将数据文件导入工作区。
“新建变量”按钮:创建一个变量。
“保存工作区”按钮:保存工作区数据。
“清除工作区”按钮:删除变量。
“Simulink”按钮:打开Simulink主窗口。
“布局”按钮:打开工作界面设计窗口。
“分析代码”按钮:打开代码分析器主窗口。
“收藏夹”按钮:为了方便记录,在调试M文件时在不同工作区之间进行切换。MATLAB在执行M文件时,会把M文件的数据保存到其对应的工作区中,并将该工作区添加到“收藏夹”文件夹里。
“绘图”选项卡(见图1-4):绘制数据图形。单击右侧的下拉按钮,弹出图1-24所示的下拉列表,从中可以选择不同的绘制命令。
>> x=0:0.2:10; >> y=exp(x); >> plot(x,y)
图像窗口主要是用于显示MATLAB图像。MATLAB显示的图像可以是数据的二维或三维坐标图、图片或用户图形接口。
在命令行窗口输入下面的程序。
弹出图1-25所示的“Figure 1”图形窗口,在该窗口中生成默认名为Figure 1的图形文件,在该文件中显示程序中输入的指数函数图形。
利用图形文件中的菜单命令或工具按钮保存图形文件后,在程序中需要使用该图形时,不需要再输入上面的程序,只需要在命令行窗口中输入文件名就可以执行文件了。
MATLAB是基于C++语言设计的,因此语法特征与C++语言极为相似,但是更加简单,更加符合科技人员对数学表达式(也就是命令)的书写格式要求,更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强。
图1-26显示了不同的命令格式。MATLAB中不同的字符(包括数字、字母和符号)、符号代表不同的含义,并组成丰富的表达式,满足用户的各种应用需求。本节将按照命令不同的生成方法简要介绍各种字符的功能。
>> sin() sin() ↑ 错误:输入字符不是 MATLAB 语句或表达式中的有效字符。
>> sin( ) 错误使用 sin 输入参数的数目不足。
>> sin(x) 未定义函数或变量 'x'。
>> x=1 x = 1 >> sin(x) ans = 0.8415
命令行“头首”的“>>”是命令输入提示符,它是自动生成的,如图1-27所示。为使内容简洁,本书中的程序用MATLAB的M-book编写,而在M-book 中运行的命令前是没有提示符的,所以本书在此后的输入命令前将不再带提示符“>>”。
“>>”为运算提示符,表示MATLAB处于准备就绪状态。如在提示符后输入一条命令或一段程序后按“Enter”键,MATLAB将给出相应的结果,并将结果保存在工作区中,然后再次显示一个运算提示符,为下一段程序的输入做准备。
在MATLAB命令行窗口中输入文字时,会出现一个输入窗口,在中文状态下输入的括号和标点等不被认为是命令的一部分,所以一定要在英文状态下输入命令。
下面介绍几种命令输入过程中常见的错误及显示的警告与错误信息。
(1)输入的括号为中文格式。
(2)函数调用格式错误。
(3)缺少步骤,未定义变量。
(4)正确格式。
>> A=[1 2;3 4] A = 1 2 3 4 >> B=[5 6;7 8] B = 5 6 7 8
>> A=[1 2;3 4]; >> B=[5 6;7 8]; >> A,B A = 1 2 3 4 B = 5 6 7 8
>> x 未定义函数或变量 'x'。
>> a=1 a = 1 >> b=2 b = 2
>> x=4*3 x = 12
>> x=4*3; >>
除了命令输入必需的符号外,MATLAB为了解决命令输入过于烦琐、复杂的问题,采取了使用分号、续行符及插入变量等方法。
1.分号
一般情况下,在MATLAB命令行窗口中输入命令,则系统根据命令给出计算结果。命令显示如下。
若不想让MATLAB每次都显示运算结果,只需在运算式后加上分号(;),命令显示如下。
2.续行符
当命令太长,或出于某种需要输入的命令必须多行书写时,需要使用特殊符号“…”来处理,如图1-28所示。
MATLAB用3个或3个以上的连续黑点表示“续行”,即表示下一行是上一行的继续。
3.插入变量
需要解决的问题比较复杂,在采用直接输入比较麻烦,即使添加分号依旧无法解决的情况下可以引入变量,赋予变量名称与数值,最后进行计算。
变量定义之后才可以使用,未定义就会出错,显示警告信息,且警告信息字体为红色。
存储变量可以不必事先定义,在需要时随时定义即可。如果变量很多,则需要提前声明,同时也可以直接赋予数值,并且注释,这样方便以后区分,避免混淆。
直接输入“x=4*3”,则自动在命令行窗口显示结果。
命令中包含“赋值号”,因此表达式的计算结果被赋给了变量y。命令执行后,变量y被保存在MATLAB的工作区中,以备后用。
若输入“x=4*3;”,则按“Enter”键后不显示输出结果,可继续输入命令,完成所有命令的输出后,显示运算结果。命令显示如下。
>> cd D:\Program Files\Polyspace\R2020a\bin %显示工作目录
>> a=1 a = 1 >> clear a >> a 未定义函数或变量 'a'。
在使用MATLAB编制程序时,掌握常用的操作命令或技巧,可以起到事半功倍的效果,下面详细介绍常用的命令。
1.cd:显示或改变工作目录
2.clc:清除工作窗口
在命令行窗口输入“clc”,按“Enter”键,执行该命令,则自动清除命令行窗口中的所有程序,如图1-29所示。
3.clear:清除内存变量
在命令行窗口输入“clear”,按“Enter”键,执行该命令,则自动清除内存中变量的定义。
给变量a赋值1,然后清除赋值。
使用MATLAB编制程序时,其余常用命令见表1-1。
在MATLAB中,一些标点符号也被赋予了特殊的意义,下面介绍常用的几种键盘按键与标点符号,见表1-2、表1-3。
MATLAB常用的基本数学函数见表1-4。
function f=mm %This file is devoted to demonstrate the use of "for" %and to create a simple matrix for i=1:4 for j=1:4 a(i,j)=1/(i+j-1); end end a
>> mm a = 1.0000 0.5000 0.3333 0.2500 0.5000 0.3333 0.2500 0.2000 0.3333 0.2500 0.2000 0.1667 0.2500 0.2000 0.1667 0.1429
MATLAB作为一种高级计算机语言,以一种人机交互式的命令行方式工作,还可以像其他计算机高级语言一样进行控制流的程序设计。M文件是使用MATLAB编写的程序代码文件。之所以称为M文件,是因为这种文件都以“.m”作为文件扩展名。用户可以通过任何文本编辑器或字处理器来生成或编辑M文件,但是在MATLAB提供的M文件编辑器中生成或编辑M文件是最为简单、方便而且高效的。M文件可以分为两种类型:一种是函数式文件;另一种是命令式文件,也有人称之为脚本文件,因为它由英文Script翻译而来。
选择工具栏命令“新建”→“脚本”或直接单击工具栏上的按钮就可打开MATLAB文件编辑器MATLAB Editor,用户即可在空白窗口中编写程序。
例1-1:生成矩阵。
解:输入下面的简单程序mm.m。
单击文件编辑器工具栏中的按钮,在弹出的Windows标准风格的“保存为”对话框中,单击“保存”按钮,就完成了文件保存。
使mm.m所在目录成为当前目录,或让该目录处在MATLAB的搜索路径上。
然后在MATLAB命令行窗口中运行以下程序,便可得到结果。
%这是一个演示文件; %This is a demonstration file. x=pi
>> dm1 x = 3.1416
>> help dm1
这是一个演示文件; This is a demonstration file.
%这是一个演示文件; %This is a demonstration file. a=input('请输入a\n') b=input('请输入b\n')
>> dm2 请输入a 1 %用户输入 请输入b 2 %用户输入
在MATLAB中,实现某项功能的一串MATLAB语句命令与函数组合成的文件称为命令式文件。这种M文件在MATLAB的工作区内对数据进行操作,能在MATLAB环境下直接执行。命令式文件不仅能够对工作区内已存在的变量进行操作,且能将建立的变量及其执行后的结果保存在MATLAB工作区里,供在以后的计算中使用。除此之外,命令式文件执行后的结果既可以显示输出,也能够使用MATLAB的绘图函数来产生图形输出结果。
由于命令式文件的运行相当于在命令行窗口中逐行输入并运行,所以用户在编制此类文件时,只需要把要执行的命令按行编辑到指定的文件中,且变量不需预先定义,也不存在文件名的对应问题。
例1-2:M文件的建立与执行1。
解:在MATLAB命令行窗口中输入“edit”调出M文件编辑器;然后,在文件编辑器中输入以下内容。
其中,%后的内容为注释内容,在函数执行时不起作用,用help命令可见。
将该M文件以文件名“dm1.m”保存在“X:\Program Files\Polyspace\R2020a\bin\yuanwenjian\1”文件夹中,然后把“X:\Program Files\Polyspace\R2020a\bin\yuanwenjian\1”添加到MATLAB的搜索路径中。
在MATLAB命令行窗口中输入以下内容。
这就是上述M文件的输出结果。
在MATLAB命令行窗口中输入以下内容。
在MATLAB命令行窗口中显示以下内容。
这就是文件dm1.m注释行的内容。
例1-3:M文件的建立与执行2。
解:在MATLAB命令行窗口中输入“edit”调出M文件编辑器,以文件名“dm2.m”保存;然后在文件编辑器中输入以下内容。
在MATLAB命令行窗口中输入以下内容。
在工作区窗口显示a、b赋值结果,如图1-30所示,这就是上述M文件的输出结果。
注意:
在运行函数之前,一定要把函数文件所在的目录添加到MATLAB的搜索路径中,或者将函数文件所在的目录设置成当前目录。
%后面的内容为注释内容,函数运行时,这部分内容是不起作用的,可以使用help命令查询。
文件的扩展名必须是.m。
为保持程序的可读性,应该建立良好的书写风格。
help命令运行后所显示的是M文件的注释语句的第一个连续块。被空行隔离的其他注释语句将被MATLAB的帮助系统忽略。
function s=equal_ab % 此函数用来验证两数是否相等 a=input('请输入a\n'); b=input('请输入b\n'); if a~=b input('a不等于b'); else input('a等于b') end
>> s=equal_ab 请输入a 1 %用户输入 请输入b 2 %用户输入 a不等于b
MATLAB中的函数(即函数式文件)通常是指MATLAB系统中已经设计好的完成某一种特定的运算或实现某一特定功能的一个子程序。MATLAB函数式文件是MATLAB中最重要的组成部分,MATLAB提供的各种各样的工具箱几乎都是以函数形式给出的。MATLAB的工具箱是内容极为丰富的函数库,可以实现各种各样的功能。这些函数在使用时,是被作为命令来对待的,所以函数有时又称为函数命令。
MATLAB中的函数式文件是M文件的主要形式。函数式文件是能够接收输入参数并返回输出参数的M文件。在MATLAB中,函数名和M文件名必须相同。
值得注意的是,命令式M文件在运行过程中可以调用MATLAB工作域内的所有数据,并且所产生的所有变量均为全局变量。也就是说,这些变量一旦生成,就一直保存在内存空间中,直到用户执行命令clear或quit时为止。而在函数式文件中的变量除特殊声明外,均为局部变量。
函数式文件的标志是文件内容的第一行为function语句。函数式文件可以有返回值,也可以只执行操作而无返回值,大多数函数式文件有返回值。函数式文件在MATLAB中应用十分广泛, MATLAB所提供的绝大多数功能都是由函数式文件实现的,这足以说明函数式文件的重要性。函数式文件执行之后,只保留最后的结果,不保留任何中间过程,所定义的变量也只在函数的内部起作用,并随着调用的结束而被清除。
例1-4:验证两个数是否相等。
解:(1)创建函数式文件equal_ab.m。
(2)调用函数。