书名:精通MATLAB科学计算与数据统计应用
ISBN:978-7-115-44187-4
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
• 编 著 赵 彬 陈 明 邹风山 孙若怀 张 铮
责任编辑 张 涛
• 人民邮电出版社出版发行 北京市丰台区成寿寺路11号
邮编 100164 电子邮件 315@ptpress.com.cn
• 读者服务热线:(010)81055410
反盗版热线:(010)81055315
在各行各业的工程实践中,有大量的科学计算工作需要完成。传统的计算方式一般需要较长的周期,相比之下开发效率极高的MATLAB是一个更好的选择。在MATLAB中,编程细节被简化,繁琐的实现过程也被略去,用户可以将更多精力集中于所需要处理的核心问题上。
MATLAB科学计算涉及数学、机械、电子、控制和金融等多个领域。本书以MATLAB科学工程计算为立足点,介绍MATLAB在科学计算领域中如何运用庞大的科学函数库来解决一些实际问题。在函数的选择上兼顾各函数的使用频率和专业性,力求典型全面。本书可作为MATLAB课程的教学用书或者线性代数、概率统计等课程的教学辅助书。
自从美国MathWorks公司推出数学软件MATLAB以来,其凭借强大的计算功能,在许多行业得以应用,成为三大数学软件之一。在MATLAB中,用户只需以数学公式的描述方式给出要计算的问题,而无需考虑其实现细节就能解决大部分实际工程的计算问题。另外,MATLAB自带了大量优秀的函数库,实现了大部分常见的算法,用户可以轻松调用而无需自己实现一遍。
在所有的编程语言中,MATLAB也许是完成同一功能时所需代码量相对较少的。MATLAB拥有类似C语言的语法风格,这使得它上手容易。矩阵式的运算,除了带来处理效率的提高以外,也大大简化了编程负担。在C语言中需要定义多维数组才能实现的功能,MATLAB都可以用矩阵做到。这一切都使得MATLAB成为一个工程计算的利器,这就是MATLAB风靡全球的原因。
当我们能够灵活使用预定义函数完成各项任务时,我们才会惊喜地发现,MATLAB比我们想象的都要优秀。
本书的编写宗旨是在向读者介绍知识的同时,培养读者的思维方法,使读者知其然还要知其所以然,并在解决实际问题中能有自己的想法。
全书共分14章,具体内容安排如下。
第1章介绍MATLAB的入门知识,为读者使用MATLAB进行科学计算打好坚实的基础。本章的知识结构:MATLAB基本简介,MATLAB与科学计算之间的联系,以及MATLAB窗口简介和MATLAB程序及其帮助系统。
第2章介绍MATLAB中程序设计的相关内容,包括基本语法、文件I/O和一些实用的编程技巧。MATLAB不仅是一个科学计算的工具,也是一门简易的计算机语言。程序设计是使用MATLAB进行科学计算的基础。
第3章介绍MATLAB中可视化编程的内容。MATLAB可以绘制数据的二维、三维,甚至更多维的图形。本章将全面介绍MATLAB的强大可视化编程方法,其中将介绍二维图形的绘制、三维图形的绘制、图形用户界面工具和一些综合实例。
第4章介绍MATLAB中求微分与积分的方法。微分与积分是大学的必修课程,也是工程实践和科学计算最为基本的工具。本章介绍了极限、微分、积分、梯度、多项式的微分、梯形法求积分、自适应辛普森(Simpleson)积分法、自适应Lobatto积分法和一些综合实例。
第5章介绍MATLAB中插值计算的方法,包括一维函数和二维函数的插值计算。一维插值包括拉格朗日插值、牛顿插值、埃尔米特(Hermite)插值、分段线性插值、分段埃尔米特(Hermite)插值和三次样条插值。二维差值包括最近邻插值、线性插值、双三次插值和散乱节点插值。本章在给出主要插值算法原理的同时,使用MATLAB实现了插值算法。通过本章的学习,读者能灵活使用常见的插值算法解决一维和二维函数的插值问题。
第6章介绍MATLAB中函数逼近的内容,包括泰勒逼近、切比雪夫逼近、勒让德逼近、帕德逼近、傅里叶逼近和综合实例。通过本章的学习,读者能够使用一些逼近函数来解决未知函数曲线的工程问题。
第7章介绍MATLAB中曲线拟合的内容,包括多项式拟合、最小二乘拟合、正交多项式最小二乘拟合、拟合工具箱和综合实例。通过本章的学习,读者能够处理一些有规律的数据,并将数据拟合成为一条已知曲线。
第8章介绍MATLAB中求解线性方程组的内容,包括求逆法、矩阵分解法、迭代法和综合实例。在自然科学和工程技术中,可以利用相关函数直接求解一些简单的线性方程组,而且可以通过简单的编程来求解一些复杂的线性方程组。通过本章的介绍,读者既能应用MATLAB中相应的函数求解线性方程组,又能通过编程,灵活使用迭代法和其他的特殊解法来求解线性方程组。
第9章介绍MATLAB中求解非线性方程组的内容。非线性方程的解法大体上有:搜索法、二分法、简单迭代法、牛顿迭代法、弦截法和多项式方程求根。通过本章的学习,读者能够熟练掌握MATLAB中可求解非线性方程的相关函数,而且能通过编程实现多种求解非线性方程的数值算法。
第10章介绍MATLAB中概率统计的随机数生成、随机变量的统计值、参数估计、假设检验和回归等。MATLAB中的统计工具箱(Statistics Toolbox)包含了200多个用于概率统计方面的功能函数,且具有简单的接口操作。通过本章的学习,读者能够利用MATLAB的强大工具箱来解决概率统计问题,这无论是对理论研究还是对科学工程实施都是非常重要的。
第11章介绍MATLAB中求解微分方程组的内容,包括常微分方程、偏微分方程——有限差分法、PDE工具箱和综合实例。常微分方程作为微分方程的基本类型之一,在自然科学界与工程界有很广泛的应用。通过本章的学习,读者能够熟练使用MATLAB的求解函数和求解器,以及通过编程进行常微分方程的求解。
第12章介绍MATLAB中优化计算的内容,主要介绍了一些常见线性规划、整数规划、贪心算法、遗传算法、模拟退火算法、粒子群算法、MATLAB优化工具箱和神经网络的最优化问题,从而使得用户面对各种不同的复杂问题时可以有更多的选择。通过本章的学习,读者不仅能使用MATLAB最优化工具箱来快速解决最优化的实际问题,而且能学会分析优化算法,从而提高分析和解决问题的能力。
第13章介绍MATLAB中C/C++与MATLAB混合编程的内容,包括MATLAB调用C/C++、C/C++调用MATLAB、使用动态链接库和一些综合实例。这些技术的出现,扩展了MATLAB的应用范围,不仅给开发人员提供了方便,而且也提高了MATLAB的竞争力。
第14章介绍MATLAB中工程计算案例精粹,包括零件参数的最优化设计、柴油机故障诊断、街头抽奖游戏解谜和Delta并联机器人建模。通过MATLAB工程计算案例,读者能对MATLAB软件平台、工具箱、高效率的数值运算及符号运算功能有更好的了解。
读者应具备一定的数学基础,包括主要的高等数学知识、少量的线性代数基本概念、对于概率理论主要思想的理解。
本书所有MATLAB实例的源代码均可从box.ptpress.com/y/44187下载。虽然本书中的所有例子都已经在Windows XP、Windows 7和Windows 8等操作系统下的MATLAB 2006到MATLAB R2014a的各个版本中测试通过,但由于笔者水平的局限,也有存在Bug的可能,或很可能存在更加优化的算法或更加合理的程序结构没有提出。如发现任何上述问题,请您不吝告知本书的作者(zhangtao@ptpress.com.cn),以便我们进行改进。
首先要感谢我的授业恩师——沈阳新松机器人自动化股份有限公司的邹风山院长和沈阳工业大学的刘振宇教授,是他们引导我进入了机器人科学研究的领域。笔者自从学会MATLAB之日起,就借助MATLAB解决了很多与机器人相关的实际工程性问题。
感谢我的同事:甘戈、张中泰、孙若怀和张鹏。在业余时间帮我校对此书、验证程序、编写代码。感谢我的领导为本书的编写提出了很多宝贵意见。能够完成此书,离不开我的父母、妻子赵雪和儿子赵梓辰给我的支持和鼓励,在此向他们表示由衷的感谢。
最后还要衷心地感谢关心和喜欢本书的读者们。热爱MATLAB是我撰写此书的最初动力,能让大家学习到其内容和知识也是不断完善该书的核心源泉。由于作者的水平有限,书中的内容有些需要完善,希望读者来信,让我从反馈中得到创作的灵感。
本书旨在推广MATLAB软件在科学计算中的应用,倘若读者能够从本书中有所收获,实属笔者之幸。
作 者
目前,多数高校将MATLAB作为本科生和研究生专业技能课程,该课程的重要性不言而喻。MATLAB在教学过程中包含理论讲授,多媒体演示和实验教学。MATLAB强大的仿真分析功能作为一种实验辅助手段使学生能够更快速、更准确地完成相关实验内容,不仅能够快速得到实验的结果,而且提高了学习效率。MATLAB作为一种实用工具激发了学生对工程学科的学习兴趣,使他们有足够的自信和能力来适应其他专业课程的学习。
本书不仅介绍MATLAB技术在科学计算领域中的应用,而且向读者展示如何运用该工具去解决经典理论问题和大量现实中的工程实践问题。
本章将介绍MATLAB的入门知识,为读者使用MATLAB来进行科学计算打好坚实的基础。同时,通过本章的学习,读者能够了解MATLAB的基本框架和程序安装方法。
MATLAB是“矩阵实验室”的英文简称,其代表了美国MathWorks公司出品的商业数学软件。MATLAB具有算法开发、数据可视化、数据分析以及数值计算等高级计算技术。
MATLAB将数值分析、矩阵计算、数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计、科学计算以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB、Mathematica和Maple并称为当今世界的三大数学软件,在各大公司、科研机构和高校中日益普及,得到了广泛应用。MATLAB是科学计算、符号运算和图形处理等多种功能强有力的实现工具,其自身也因此得到了迅速发展,功能不断扩充,版本不断更新。
在20世纪70年代中期,时任美国新墨西哥大学计算机科学系主任的Cleve Moler教授出于减轻学生编程负担的动机,为学生设计了一组调用LINPACK和EISPACK的FORTRAN子程序库。这两个程序库具有“具有通俗易用”的接口,是MATLAB的雏形。
经过几年的校际流传,在工程师John Little的积极推动下,由John Little、Cleve Moler和Steve Bangert一起合作,于1984年成立了MathWorks公司,并把MATLAB正式推向市场。从那时起,MATLAB的内核采用C语言编写。此后,它又添加了丰富多彩的图形处理、多媒体、符号运算以及与其他流行软件的接口功能,使得MATLAB更受欢迎。
MATLAB以商品形式出现后,仅短短几年,就以其良好的开放性和运行的可靠性,使原先控制领域里的封闭式软件包(如英国的UMIST,瑞典的LUND和SIMNON,德国的KEDDC)纷纷被淘汰,而改以MATLAB为平台加以重建。进入20世纪80年代,MATLAB已经成为国际控制界公认的标准计算软件。
在经历了多年的发展后,如今的MATLAB已经成为国际最为流行的科学计算和工程应用的软件工具之一,同时它也成为了一种全新的高级编程语言,可以说它是第四代计算机语言。其特点是:拥有更丰富的数据类型和结构、更友善的面向对象特性、更快速精良的图形可视化界面、更广博的数学和数据分析资源以及更多的应用开发工具。就影响力而言,至今仍然没有哪一种计算软件可以与MATLAB相匹敌。
自从20世纪90年代以来,在大学校园里,诸如线性代数、自动控制理论、数理统计、数字信号处理、图像处理、模拟与数字通信、时间序列分析、动态系统仿真等课程的教科书都把MATLAB作为主要工具进行介绍。MATLAB已经是硕士生、博士生必须掌握的基本工具。在国际学术界,MATLAB已经被确认为准确、可靠的科学计算标准软件。在许多国际一流学术刊物上,都可以看到MATLAB的影子。
在设计研究单位和工业部门,MATLAB被作为进行高效研究、开发的首选软件工具。如美国National Instruments公司的信号测量、分析软件LabVIEW,Cadence公司的信号和通信分析设计软件SPW等,它们或者直接构建在MATLAB之上,或者以MATLAB为主要支撑。
MATLAB自问世以来,由于其强大的功能而得到广泛使用。MATLAB作为设计和研发上的首选工具,其应用范围包括科学计算、建模仿真、生物医学、信号与信息处理和自动控制系统等领域。MATLAB是一种包含大量计算工具和算法的集合,方便用户直接找到想要的各种计算功能。这些函数包括从最基本的函数到诸如矩阵、特征向量、傅里叶变换、符号运算、工程优化工具以及动态仿真建模等。
MATLAB提供了极其强大和广泛的预定义函数库,这样就使得技术工作变得简单高效,如果没有需要的函数,用户还可进行任意扩充。由于MATLAB语言库函数与用户文件的形式相同,用户文件可以像库函数一样被随意调用,所以用户可任意扩充库函数。
MATLAB语言和C语言的语法类似,但是比C语言更为简便,更加符合科学技术人员的工作方式。这种设计使得即使不懂C语言和非计算机专业的人,也能使用该工具进行研发和设计。这也是MATLAB为什么这么受欢迎的最重要原因之一。
MATLAB不仅可以使用自身的解释器,还可以将用户的MATLAB程序自动转换为独立于MATLAB运行的C/C++代码,还允许用户在其他平台中调用MATLAB的库函数。另外,MATLAB还提供了和“.NET”、Java语言的接口,并支持COM调用。
MATLAB的图形可视能力在数学软件中是首屈一指的。MATLAB提供了将工程和科学数据可视化所需的全部图形功能,包括二维和三维绘图可视化函数、用于交互式创建图形的工具以及将结果输出为常用图形格式的功能。
如图1-1所示,在MATLAB中,不管函数多么复杂,它的图形不需要通过过多复杂的编程就能得到富于感染力的表现。MATLAB有比较完备的图形标识指令,可以通过添加多个坐标轴,更改线的颜色、粗细和标记,添加批注、LaTeX和图例,以及绘制形状来对图形进行自定义。
(a)示例图片1
(b)示例图片2
图1-1 MATLAB的数据可视化能力
MATLAB软件包含诸多工具,限于篇幅,这里当然不能把所有工具都一一列出,本节只是从MATLAB应用的领域对MATLAB的工具箱进行简单的分类。一般来说,MATLAB的工具箱可以用来完成以下工作:(1)集成数学符号、分析、统计与优化;(2)信号处理与通信;(3)图像处理与计算机视觉;(4)测试与测量;(5)计算金融;(6)并行计算;(7)数据库访问与报告;(8)代码生成和验证。
下面列出与科学计算相关的工具箱。
(1)集成数学符号、分析、统计与优化:
(2)并行计算:
(3)数据库访问与报告:
MATLAB与科学计算相互结合的魅力特点可归为以下几点。
本章节将介绍MATLAB的安装开发环境、窗口,读者可学习MATLAB的安装、MATLAB的集成开发环境、以及MATLAB窗口的使用方法。
下面介绍在Windows 7上安装MATLAB R2014a的方法,其他系统上的安装过程与之类似。
(1)将提前准备好的“Mathworks.Matlab.R2014a.iso”安装包解压到指定目录下,可任意选择目录,硬盘空间足够即可。解压后,会出现图1-2所示的安装文件目录。
图1-2 解压后的MATLAB文件目录
(2)双击setup.exe进行安装,跳过欢迎界面后,出现图1-3所示的界面。因为考虑到存在没有网络的情况,安装中选择“使用文件安装密钥”单选项(不需要Internet连接),单击“下一步”按钮。
图1-3 MATLAB安装界面
(3)进入图1-4所示界面,选择“是”单选项以接受许可协议,单击“下一步”按钮。
图1-4 安装协议
(4)如图1-5所示,选择“我已有我的许可证的文件安装密钥”单选项并输入安装密钥,单击“下一步”按钮。
图1-5 输入MATLAB密钥
(5)如图1-6所示,选择安装目录,这里建议选用默认的安装目录。如果想更改安装目录,单击“浏览”按钮,设置其他安装目录,其他安装目录不能有中文。单击“下一步”按钮。
图1-6 MATLAB安装的第五步
(6)图1-7所示界面可以方便用户选择想要安装的产品。当然因为初学者对大部分MATLAB产品并不太了解,为了使得MATLAB功能完整,请选择默认的安装,单击“下一步”按钮。
图1-7 典型安装或者自定义安装
(7)进入图1-8所示的界面,选中相应复选框以将快捷方式添加到桌面和“开始”菜单中的“程序”文件夹,单击“下一步”按钮。
图1-8 建立快捷方式
(8)进入图1-9所示的界面,单击“安装”按钮开始安装。
图1-9 确认安装
(9)安装完成后会进入图1-10所示的界面,单击“下一步”按钮。
图1-10 安装完毕确认
(10)进入图1-11所示的界面,选中“激活MATLAB”复选框,单击“下一步”按钮。
图1-11 激活MATLAB
(11)如图1-12所示,由于上面选择的是无网络安装,这里选中“不使用Internet手动激活”复选框,单击“下一步”按钮。
图1-12 不使用网络激活MATLAB
(12)如图1-13所示,单击“浏览”按钮选择正确的授权文件,单击“下一步”按钮。
图1-13 选择许可文件
(13)如图1-14所示,单击“完成”按钮完成安装。
图1-14 激活MATLAB
双击MATLAB的快捷方式,即可启动MATLAB R2014a,进入MATLAB的集成开发环境,如图1-15所示。
图1-15 MATLAB的集成开发环境
可通过如下方法退出MATLAB:
启动MATLAB之后,如图1-16所示,出现的工作界面就是MATLAB的主窗口。
图1-16 MATLAB的主窗口
在MATLAB的主窗口中,默认打开的子窗口有:(1)命令行窗口(Command Window);(2)命令历史记录窗口(Command History);(3)当前文件夹(Current Folder);(4)工作区(Workspace);(5)文本编辑器(File Editor);(6)图形窗口(Figure Window);(7)帮助窗口(Help)等。
在默认设置下,命令行窗口自动显示于MATLAB工作界面的中部,如图1-17所示。命令行窗口是用户和MATLAB进行交互的主要场所。MATLAB命令行窗口的最上面一行是系统初始的提示信息。MATLAB具有良好的交互性,当在提示符输入一段正确的运算式,只要按回车(Enter)键,命令窗口中就会直接显示运算结果。
图1-17 命令行窗口(Command Window)
命令历史记录窗口(Command History)用于记录用户在命令行窗口中的操作,是按逆序排列的。在默认设置下,命令历史记录窗口自动显示在MATLAB工作界面的右下侧,如图1-18所示。历史命令窗口显示用户在命令窗口中所输入的每条命令,并且标明使用时间,方便用户查阅。如果用户想再次执行某条已经执行过的命令,那么只需要在历史命令窗口中双击该命令。这些命令会一直存在下去,直到它被人为删除。若想要在命令历史记录窗口删除一个或多个命令,可以先选择对象,然后单击右键,这时就有一个弹出菜单出现,选择“Delete Section”命令,即可删除。
图1-18 命令历史记录窗口
在默认设置下,当前文件夹窗口自动显示于MATLAB工作界面的左上侧,如图1-19所示。当前文件夹窗口显示着当前用户工作所在的路径,它不仅可以显示当前目录的文件,还可以提供搜索。通过上面的目录选择下拉菜单,用户可以轻松地选择已经访问过的目录。单击右侧的按钮,可以打开路径选择对话框,在这里用户可以设置和添加路径,也可以通过此窗口最上面一行的超链接来改变路径。
图1-19 当前文件夹窗口
在默认设置下,工作区窗口自动显示于MATLAB工作界面的左下角,与当前文件夹窗口处于同一列,可以通过按住工作区窗口或当前文件夹窗口进行移动来调整其位置,工作区窗口如图1-20所示。
图1-20 工作区窗口
用MATLAB编写的程序存储于文件中,称为M文件。根据调用方式的不同,M文件可分为两类:命令文件(Script File)和函数文件(Function File)。图1-21所示为文本编辑器窗口,该窗口显示了用户所编辑的程序。
图1-21 文本编辑器窗口
MATLAB允许程序员为他们的程序建立一个交互式的用户图形界面。利用MATLAB的这种功能,程序员可以设计出能被无经验的用户操作的复杂数据分析程序。图1-22、图1-23所示的图像窗口主要用于显示MATLAB图像。它所显示的图像可以是数据的二维或三维坐标图、图片或用户图形接口。
图1-22 拉格朗日插值
图1-23 埃尔米特插值
初学者经常把某个自己编写的M程序放在当前工作空间的某个子目录下,但执行时MATLAB却找不到这个程序,其实这是搜索路径设置的问题。MATLAB的一切操作都是在它的搜索路径中进行的。
如果用户在MATLAB提示符后输入一个名字,那么MATLAB将按以下顺序寻找这个名字:(1)查看这个名字是否是一个变量名。如果它是一个变量,MATLAB将会显示出这个变量的值;(2)查看它是否是内建函数或命令。如果是,则执行对应的函数或命令;(3)检查它是不是在当前目录下的一个M文件。如果是,则执行对应的函数或命令;(4)检查它是不是在MATLAB搜索路径的所有目录下的一个M文件。如果是,则执行对应的函数或命令。
注意
由于系统首先搜索变量名,如果函数或命令名与某个变量名同名,那么这个函数或命令将变得无法访问。这是初学者易犯的错误之一。
用户可以使用下面的2种方法启动图1-24所示的“设置路径”对话框,随时检查和修改搜索路径:
图1-24 路径工具
MATLAB还包括一个特殊的命令—which命令,它能帮助我们找到正在执行的文件版本和路径,这在检查文件名冲突方面是非常有用的。
这个命令的格式是:which filename。
filename代表所要加载的函数名。
例如,加载的函数是perms.m。
>> which perms.m %返回perms.m文件所在的路径
C:\Program Files\MATLAB\R2010b\toolbox\matlab\specfun\perms.m
在命令行窗口输入path命令,可以得到MATLAB的所有搜索路径,如图1-25所示。
>> path
图1-25 所有搜索路径
使用MATLAB的时候,可以在命令行窗口内直接书写MATLAB命令,也可以将代码保存到M文件中,然后运行该文件。使用MATLAB主界面菜单“文件”→“新建”→“M-File”可以打开一个文本编辑器编辑M文件。
在M文件编辑器的菜单中,选取“Debug”→“Run”即可运行M文件及MATLAB的代码文件。在路径设置正确的情况下,在命令行窗口中直接输入M文件的名称可以运行M文件中的代码。M文件的取名要以英文字母开头,用字母和数字组成,不要取中文文件名称,也不要在文件名称中使用特殊字符。M文件不能和MATLAB系统函数重名。
启动MATLAB文本编辑器建立新的M文件有3种方法。
打开已有的M文件也有3种方法。
【实例1.1】用图形窗口形式重新绘制正弦、余弦曲线。
>> clear all; %%清除所有的变量,包括全局变量
>> clc; %%清除工作窗里的内容
>>x=linspace(0,2*pi,60); %%将产生从0到2*pi以60点均等分的数组
>>y=sin(x); %%创建函数关系
>>z=cos(x);
>>H1=figure; %%控制画图的窗口
>>plot(x,y); %%二维曲线绘图
>>title('sin(x)'); %%给已经画出的图加一个标题
>>axis([0 2*pi -1 1]); %%设置轴的样式,包括坐标轴范围、可读比例等
>>H2=figure; %%控制画图的窗口
>>plot(x,z); %%二维曲线绘图
>>title('cos(x)');
>>axis([0 2*pi -1 1]);
效果如图1-26、图1-27所示。
图1-26 绘制正弦曲线
图1-27 绘制余弦曲线
【实例1.2】用图形窗口形式重新绘制正切和余切曲线。
>> clear all; %%清除所有的变量,包括全局变量
>> clc; %%清除工作窗里的内容
>>x=linspace(0,2*pi,60); %%将产生从0~2×pi以60点均等分的数组
>>t=sin(x)./(cos(x)+eps); %%创建函数关系
>>ct=cos(x)./(sin(x)+eps);
>>H3=figure; %%控制画图的窗口
>>plot(x,t); %%二维曲线绘图
>>title('tangent(x)'); %%给已经画出的图加一个标题
>>axis([0 2*pi -40 40]); %%设置轴的样式,包括坐标轴范围、可读比例等
>>H4=figure; %%控制画图的窗口
>>plot(x,ct); %%二维曲线绘图
>>title('cotangent(x)');
>>axis([0 2*pi -40 40]);
效果如图1-28、图1-29所示。
图1-28 绘制正切曲线
图1-29 绘制余切曲线
将帮助窗口单独设置为一个小节,可见其重要性。MATLAB的输入命令和函数极多,有时候很难记住。为了方便用户的使用,MATLAB提供了帮助系统功能。
借助这一功能,用户可以很容易地查询相关函数的使用方法和相关信息。可以选择如下方法进入MATLAB的帮助系统,如图1-30所示。
图1-30 帮助窗口
熟练的用户可以使用更为快速的方式,即命令窗口查询帮助,这些帮助主要可以分为help系列和lookfor系列。
>> help
图1-31所示为当前帮助系统所有项目目录名称,该窗口显示了函数说明目录。
图1-31 当前帮助系统所有项目目录名称
>>lookfor diff
图1-32所示为输入完命令后显示的帮助窗口。
图1-32 帮助窗口
(1)通用命令(表1-1):
表1-1 MATLAB的通用命令
命 令 |
命 令 说 明 |
命 令 |
命 令 说 明 |
---|---|---|---|
cd |
显示或改变工作目录 |
hold |
图形保持开关 |
dir |
显示目录下内容 |
disp |
显示变量或文字内容 |
type |
显示文件内容 |
path |
显示搜索目录 |
clear |
清理内存中的变量 |
save |
保存内存变量 |
clf |
清理当前图像窗口 |
load |
加载指定文件的变量 |
clc |
清理命令窗口 |
diary |
日志文件命令 |
echo |
命令行窗口信息显示开关 |
! |
调用DOS命令 |
pack |
整理内存 |
quit |
退出MATLAB |
(2)常用操作技巧(表1-2):
表1-2 MATLAB的常用操作技巧
命 令 |
命 令 说 明 |
命 令 |
命 令 说 明 |
---|---|---|---|
↑ |
Ctrl+p,调用上一行 |
Home |
Ctrl+a,光标置于当前行开头 |
↓ |
Ctrl+n,调用下一行 |
End |
Ctrl+e,光标置于当前行末尾 |
← |
Ctrl+b,光标左移一个字符 |
Esc |
Ctrl+u,清除当前输入行 |
→ |
Ctrl+f,光标右移一个字符 |
Del |
Ctrl+d,删除光标处的字符 |
Ctrl+ ← |
Ctrl+l,光标左移一个单词 |
Backspace |
Ctrl+h,删除光标前的字符 |
Ctrl+ → |
Ctrl+r,光标右移一个单词 |
Alt+ Backspace |
恢复上一次删除 |
(3)标点(表1-3):
表1-3 MATLAB的相关标点
标 点 |
定 义 |
标 点 |
定 义 |
---|---|---|---|
: |
冒号,具有多种功能 |
. |
小数点,小数点及域访问符等 |
; |
分号,行分隔及取消运行显示等 |
… |
续行符 |
, |
逗号,列分隔及函数参数分隔符等 |
% |
百分号,注释标记 |
() |
括号,指定运算过程中的先后次序等 |
! |
惊叹号,调用操作系统 |
[] |
方括号,矩阵定义的标志等 |
= |
等号,赋值标记 |
{} |
大括号,定义单元数组等 |
‘’ |
单引号,字符串标示及矩阵转置等 |
作为一种强大的工具,MATLAB体现了与它价值相符的优点。MATLAB编程简单,使用方便,只要入门就很好掌握,即使语法有问题,调试起来也是非常容易的。MATLAB的矩阵和向量操作功能是其他语言无法比拟的。
在MATLAB环境下,数组的操作与数的操作一样简单,基本数据单元是不需要指定维数的,不需要说明数据类型的矩阵,而其数学表达式的表示方式和运算规则与我们日常的使用习惯相同。学习MATLAB是有一定方法的,其中最重要的就是基础知识扎实。
前面已经介绍了MATLAB的应用范围之广,可以应用到多个行业当中去。鉴于此,要想真正学好MATLAB,需要弄清楚所在行业的相关现状。只有将MATLAB的技术应用到该行业当中去,才能使得书本上的知识不过于抽象,不容易理解。只有把理论和实际相互结合,才能把书本上的知识学好。
在学习的过程中,要把MATLAB当作一种工具,而不仅仅是一种语言。MATLAB的编程语言只是MATLAB与用户交互的桥梁,认清楚这一点很重要。
MATLAB最主要的应用是科学数值计算和最优化问题,MATLAB有足够多的工具箱可解决这些问题。但是在使用这些功能强大的工具箱之前,应该首先注意的是对基础理论知识的掌握,这一点在编写程序的过程中是极其重要的。碰到不会或者概念模糊的问题,需要借助帮助系统来确定使用方法是否正确。
对于较困难的问题,解决的办法是要分解问题,逐一解决。分解就是把实际问题转化为数学模型相关问题。绝大多数问题都可以转化为两类问题:一类是求解问题,一类是最优化问题。这个过程可能很简单,有现成的方法可用;也有可能很复杂,还可能涉及多种转化。
工程问题要解决的就是告诉计算机要做什么,该怎么做。所以用户在根本不知道某个问题该怎么解决的时候,就更加无法写出优秀的程序。鉴于此,要想编写优秀的程序,可以把需要重复执行的程序尽量写成函数,便于修改和维护。
在编写程序的过程中,如果程序出错了,而又查不到语法的错误,断点是个不错的选择。编程中最可怕的错误不是语法错误,而是逻辑错误,因为逻辑错误是最难被纠正的。一个很有用的工具就是断点,断点应该是纠错中最常用的工具。当程序运行到断点之后就会中断,这时用户就可以输入命令查看内存情况等。一步步地跟踪,直到变量值跟预期的不一样,这时就可以很容易地找到错误在什么地方发生了。