一 MATLAB概述
1.1 MATLAB是21世纪的科学计算软件
在科学研究和工程应用等领域中会涉及到大量的科学计算问题,自从计算机出现以来,人们就一直在使用计算机这个有力的工具帮助解决科学计算问题,并由此发明了许多用于科学计算的程序语言,如BASIC、FORTRAN、C等等。随着时代的变化、随着计算机的普及和快速发展,计算机程序语言在不断地变化发展、在不断地推陈出新。在当今时代,什么程序语言是最流行的科学计算语言呢?答案是——MATLAB语言。MATLAB之所以能够成为最好的和最流行的科学计算语言,是因为它具有强大的科学计算及数据处理能力和出色的图形处理功能等特点。
1
1.1.1 MATLAB具有强大的科学计算及数据处理能力
MATLAB拥有600多个工程中要用到的数算函数,可以方便地实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而且经过了各种优化及容错处理,因此使用起来稳定性和可靠性非常高,在通常情况下,可以用它来代替底层编程语言,如C和C++等。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。MATLAB函数所能解决的问题包括矩阵运算、数组操作(阵列运算)、复数的各种运算、三角函数和其他初等数学函数运算、非线性方程求根、线性方程组的求解、微分方程及偏微分方程组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、建模和动态仿真等等。
2
1.1.2 MATLAB具有出色的图形处理功能
在科学计算中,往往需要用各种图形把数值计算的结果形象地表现出来,以帮助人们更好地理解、认识和发现其中的科学规律。MATLAB不仅提供数值计算功能和符号运算功能,而且自诞生之日起就具有方便的数据可视化功能,使计算结果的可视化要求得到充分满足。MATLAB在二维曲线和三维曲面的绘制和处理等方面的功能比一般数据可视化软件更加完善,在一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等)方面也表现得非常出色。在MATLAB 6.x中有一个对图形对象属性进行设置的图形属性编辑界面,该界面比 MATLAB 5.x中的界面功能更为全面,操作也更为方便。MATLAB 6.x对图形的输出也做了适当的改进,提供了更为丰富的属性设置,以提高图形输出的效
3
果。对一些特殊的可视化要求,例如图形动画等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。另外,新版本的MATLAB还着重在图形用户界面(GUI)的制作上做了很大的改善,对这方面有特殊要求的用户也可以得到满足。
MATLAB将数值计算功能、符号运算功能和图形处理功能高度地集成在一起,在数值计算、符号运算和图形处理上做到了无缝的衔接,极大地方便了用户,这是它在科学计算中能得到广泛应用的重要原因之一。
1.1.3 MATLAB程序语言简单易用
早期用于科学计算的计算机语言,由于计算机内存容量和运算速度的等原因,常常要定义常量、变量、向量和矩阵等的不同的数据类型,结果导致编程过于复杂化。和这些语言不一样,MATLAB语言对他们进行了高
4
度抽象,实现了数据类型的高度统一,即常量、变量、向量和矩阵等都具有相同的数据类型。MATLAB语言认为所有的数据都是一个对象类,都具有相同的属性。因此,用户不需要事先分别定义常量、变量、向量和矩阵等的数据类型就可以直接使用他们(当然MATLAB的这种设计思想是以高性能计算机的出现和普及作为前提条件的),编程得到了很大简化。例如,在MATLAB中,基本的计算单元用复双精度矩阵来表示,其大小是n行m列,矩阵各数据元素存放在两个双精度向量中,一个存放实部数据(指针pr指向它),另一个存放虚部数据(指针pi指向它)。如果是实数,则复双精度矩阵中pi为空。复数或实数则可以理解为1×1的矩阵。
MATLAB语言是一种“数学形式的语言”,它的操作和功能函数指令就是用平时计算机和数学书上的英文单词和符号来表达的,比BASIC、FORTRAN和C等语言更
5
接近于人们书写的数学计算公式、更接近于人们进行科学计算的思维方式,用MATLAB语言编写程序犹如在演算纸上排列公式与求解问题,故有人称MATLAB编程语言为“演算纸”式科学算法语言。因此,MATLAB语言简单自然,学习和使用更容易。
MATLAB程序文件是一个纯文本文件,扩展名为.m,用任何字处理软件都可以对它进行编辑。MATLAB本身就像一个解释系统,对其中的函数程序的执行以一种解释执行的方式进行,程序不必经过编译就可以直接运行,而且能够及时报告出现的错误,进行出错原因分析。因此,程序调试容易、编程效率高。
MATLAB的用户界面精致,接近Windows的标准界面,人机交互性强,操作简单。新版本的MATLAB提供了完整的联机查询、帮助系统,极大地方便了用户的使用。例如,在开发环境中,MATLAB 6.x提供了强大的帮
6
助功能,几乎所有的帮助都能以在线帮助的形式出现,同时也提供了一种全新的帮助浏览器,更加方便用户获得所需要的信息。与MATLAB 5.x相比,MATLAB 6.x改进了原有的系统结构,将各种对MATLAB应用提供支持的系统集成为全新的MATLAB开发环境,其中最为明显的就是,集各种对MATLAB文件、数据变量进行操作的工具以及MATLAB自身的辅助工具为一体的MATLAB桌面系统。该桌面系统就是用户对MATLAB操作的面板。从开始应用MATLAB到退出MATLAB,几乎所有具体的操作都将在桌面系统内完成。
1.1.4 MATLAB功能强大
MATLAB为许多专业领域开发了功能强大的模块集或工具箱(一般都是由这些领域的专家们开发的),用户可以直接使用这些工具箱而不需要自己编写代码。目前,
7
MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如概率统计、NAG和偏微分方程求解、样条拟合、优化算法、模糊逻辑、工程规划、模型预测、模型处理、神经网络、数据采集、交流通信、DSP与通讯、数字信号处理、小波分析、光谱分析、图像处理、系统辨识、控制系统设计、非线性控制设计、鲁棒控制、QFT控制设计、LMI控制、实时工作、数据库接口、金融分析、金融管理、地图工具、嵌入式系统开发、实时快速原型及半物理仿真、定点仿真、电力系统仿真等等,都在工具箱(Toolbox)家族中有了自己的一席之地。
在模型化和系统级仿真方面,MATLAB开发了分支产品Simulink,主要用来实现对工程问题的模型化和动态仿真。Simulink体现了模块化设计和系统级仿真的具体思想,使得建模仿真如同搭积木一样简单。Simulink对仿真的实现可以应用于动力系统、信号控制、通信设计、金
8
融财会及生物医学等各个领域的研究中。
MATLAB留有与其它实用的程序接口。MATLAB可以方便地与FORTRAN,C等语言接口,以充分利用各种资源。用户只需将已有的EXE文件转换成MEX文件,就可以方便地调用有关程序和子程序。新版本的MATLAB可以利用MATLAB编译器和C/C++数学库和图形库,将自己的 MATLAB程序自动转换为于MATLAB运行的C和C++代码。MATLAB还和符号运算最为强大的工具软件Maple有很好的接口,这也大大扩充了MATLAB的符号运算功能。此外,在MATLAB 6.x中增加了与Java的接口,并为实现两者的数据交换提供了相应的函数库。
1.1.5 MATLAB开放性强
MATLAB强大的功能与其开放性设计思想是分不开
9
的,正是这种开放性设计思想,增强了MATLAB强大的生命力。
MATLAB对函数程序的执行是以一种解释的方式进行的,MATLAB完全成了一个开放的系统,用户可以方便地看到函数的源程序,也可以方便地开发自己的程序,甚至创建自己的“库”。
在工具箱方面,该公司本身就推出了30多个应用工具箱,而世界上超过200家公司开发出与MATLAB兼容的第三方产品,这些产品向用户提供更多的工具箱、模块集、与其他商业产品的接口等。
MATLAB是一个开放的环境。全世界各地,特别是许多大学都建立了MATLAB学习研究小组,他们也通过互联网交流学习心得和经验,MathWorks公司特别鼓励这种交流,以丰富和扩展MATLAB的使用范围。目前,MATLAB 7.0版本已经面世,其功能和使用便捷程度又有
10
了很大提高。MATLAB的相关书籍超过涉及19种不同文字600种。
由于MATLAB具有以上其他计算语言无法比拟的优势,在美国及其他发达国家的理工科院校里,MATLAB已经成为了一门必修的课程,是攻读学位的大学生、硕士生和博士生必须掌握的基本工具。在科研院所、大型公司或企业的工程计算部门,MATLAB也是最为普遍的计算工具之一。由此可见,MATLAB就是21世纪真正的科学计算语言。
1.2 MATLAB软件的发展历史
MATLAB是由MATrix和LABoratory两个词的前三个字母组合而成的,含义是矩阵实验室。它是MathWorks公司于1984年推出的一套高性能的数值计算和数据可视化数学软件。
11
20世纪70年代,Cleve Moler和他的同事在美国国家自然科学基金的资助下研发了调用LINPACK和EISPACK的FORTRAN子程序库,这两个程序库是用于解线性方程和矩阵特征值问题的,代表着当时矩阵计算软件的最高水平。后来Cleve Moler在新墨西哥大学给学生开线性代数课程时,用业余时间为学生编写使用方便的LINPACK和EISPACK的接口程序,并给这个接口程序取名为MATLAB。Cleve Moler先后到多所大学讲学,MATLAB逐渐为人们所接受并成为应用数学界的术语。
当Cleve Moler 1983年到斯坦福大学访问时,工程师John Little就意识到MATLAB将会在工程计算领域里大有作为,于是他与Moler及Steve Bangert等人一起合作开发了第二代专业版MATLAB。从这一始,MATLAB的核心就采用C语言编写,并且MATLAB除了具有数值计算的功能以外,还具备了数据可视化的功
12
能。
1984年,Mathworks公司成立,把MATLAB推向了市场,并继续MATLAB的研制和开发。1993年,MATLAB的第一个Windows版本问世,同年,支持Windows 3.x的MATLAB 4.0版本推出。4.0版本做了很大的改进,如增加了Simulink,Control, Neural Network,Optimization,Signal Processing,Spline,State-space Identification,Robust Control,Mu-analysis and synthesis等工具箱。1993年11月,Mathworks公司又推出了MATLAB 4.1版本,首次开发了Symbolic Math符号运算工具箱,其升级版本MATLAB 4.2c在用户中得到广泛的应用。
1997年,MATLAB 5.0版本问世了。相对于MATLAB 4.x版本,它是真正的32位运算,功能强大,数值计算加快,图形表现有效,编程简洁直观,用户界面
13
十分友好。
2000年下半年,Mathworks公司推出了MATLAB 6.0(R12)的试用版,2001年初推出了正式版。2002年7月又推出了他们的最新产品MATLAB 6.5(R13),Simulink升级到5.0版本。MATLAB 6.5提供了JIT程序执行加速器,大大提高了程序的执行速度。
本教程主要以MATLAB 6.5为蓝本,简明介绍MATLAB语言的数值计算功能、绘图功能和在数值计算方法中的应用等内容。
1.3 MATLAB软件的组成
MATLAB软件是一个大家庭,有许多成员,包括应用程序开发工具、工具箱(Toolbox)、数据存取工具、模块集、状态流图、代码生成工具、学生产品等。
14
应用程序开发工具包括MATLAB编译器、C/C++数学库、MATLAB运行服务器、MATLAB Web服务器,这些工具可以建立和发布于MATLAB环境的应用程序(需要编译)。
工具箱实际上是一些高度优化并且是面向专门应用领域的一系列MATLAB函数(称为M文件)的集合,它可用来求解各类学科的问题。仅随软件提供的工具箱可支持的领域就有信号处理、图像处理、控制系统设计、最优化、金融工程、符号数学、神经网络、系统辩识等等。工具箱的最大的特点是它的开放性,几乎所有函数都是用MATLAB语言写成的(只有少数工具箱的某些函数是使用C语言写成的动态库函数),因而可以直接阅读和加以改写,用户也可以自行开发适合特定领域的工具箱。
数据存取工具提供了从外部数据源获取数据的简易途径,这些数据源包括外部硬件和外部数据库(与JDBC、
15
ODBC兼容)。为了方便数据的读取,MATLAB 6.x提供了数据编辑器,以完成从MATLAB外部便捷地读取数据的功能;通过该编辑器可以实现多种数据类型的转换。
模块集是面向应用领域的模块(Simulink的基本单位)的集合,这些模块可以直接用于Simulink模型中,在命令窗口(matlab command window)键入“simulink”,就出现(SIMULINK) 窗口,以往十分困难的系统仿真问题,用SIMULINK只需拖动鼠标即可轻而易举地解决问题。状态流图是一个专门针对事件驱动系统建模和设计的图形化的模拟环境。代码生成工具可以从Simulink模型或状态流图中产生可定制的C和Ada代码,以便实现快速原型和硬件在线模拟。
学生产品是专门针对美国和加拿大地区的学生而发布的MATLAB的简易和廉价版本。
16
1.4 MATLAB软件的安装 1.4.1 运行MATLAB的基本要求 1. MATLAB 6.5对硬件的要求
·CPU 奔腾、奔腾Pro、奔腾二、三或四代、AMD Athlon或者更高;
·光驱 至少为24速光驱;
·内存 至少128MB,推荐256MB以上;
·硬盘 至少预留260MB的硬盘空间(根据需要安装的东西所定);
·显卡 256色以上。 2. MATLAB 6.5对软件的要求
17
· Microsoft Windows Me/98/NT/2000/XP; · Microsoft Word 97/2000/XP,用以使用MATLAB Notebook;
· Compaq Visual Fortran 5.0,Microsoft VC/C++5.0,Borland C/C++5.0,
Borland C++;
· Builder version 3.0或更高版本,用以实现API; · Adobe Acrobat Reader,用以阅读MATLAB的PDF帮助信息。
可见,MATLAB 6.5对内存的要求加大,并且不再支持Windows 95系统,不再支持Office95。根据Mathworks公司的报告,在即将发行的新版本的产品中将不再支持Windows 98系统。读者可以根据自己的需求来合理选择需要安装的版本。
18
1.4.2 安装MATLAB
将MATLAB 6.5的安装盘放入光驱,系统会自动搜索到autorun文件并进入安装界面。安装步骤十分简便,按提示进行操作就可以了。当用户填写注册信息及接受使用协议后,将进入MATLAB的选择安装界面,如图1.1所示。用户可以根据使用的要求有选择地安装各组件和安装目录。
完全安装MATLAB 6.5需要1.5GB以上的硬盘空间,对一般的计算机用户来说,许多工具箱软件包可能在相当长的时间内根本用不到,因此选择安装就显得很重要。表1.1列出了供选择的各个选项的具体解释。对于初学者,安装表中粗体内容即可,大约需要250MB的硬盘空间。对于硬盘很大的用户,最好需要什么才安装什么,并不是安装得越多越好。
19
图1.1
选好需要安装的组件和安装目录后就可以进行安装了。在安装之后再重新启动计算机,安装时所做的一些设置,如搜索路径设置等才会生效。
表1.1
可以选择安装的项目
组件选项 功能解释 MATLAB组件选项 Financial Toolbox Fixed-Point Blockset 功能解释 金融财政工具箱 MATLAB 主程序 Simulink 动态仿真 定点模块集 20
CDMA Reference Blockset Communications CDMA参考模块集 Fuzzy Logic Toolbox GARCH 模糊逻辑工具箱 GARCH工具箱 图像处理工具箱 通信模块集 Blockset Toolbox Image Communications 通信工具箱 Processing Toolbox Toolbox Control System Toolbox 控制系统工具箱 Toolbox 数字信号模LMI Control DSP Blockset 块集 Toolbox MATLAB C/C++ Graphics 具箱 Library 数据库工具MATLAB C/Database Toolbox 箱 C++ Math 库 MATLAB C/C++数学具箱 MATLAB C/C++图形LMI控制工Instrument Control 具箱 器材控制工Data Acquismon Toolbox 数据采集工 21
Library 数据流入工MATLAB Datafeed Tookbox 具箱 刻度标尺模块集 Generator Mapping Excel Link 外链接 Toolbox Model Filter Design Toolbox 滤波器设计Predictive 工具箱 Control Toolbox Financial Derivatives Toolbox 具箱 Developer's Kit Compiler MATLAB Report Blockset 计算库 MATLAB编译器 Dials and Gauges MATLAB报告生成器 制图工具箱 模型预测控制工具箱 摩托罗拉数金融系统工Motorola DSP 字信号处理开发工具包 金融时间系列工具箱 Mu-Analysis and Synthesis 合成工具箱 Mu分析与Financial Time SeriesToolbox Toolbox 22
Neural Toolbox Network 神经网络工具箱 Signal Processing 信号处理工具箱 Toolbox Nonlinear Control 非线性设计Design Blockset 模块集 Generator Optimization Toolbox 最优化工具Spline Toolbox 箱 状态流工具Stateflow Equation Toolbox Power Blockset Real-Time 实时工作间 Workshop Real-Time Workshop Coder Real-Time
Simulink Report Simulink报表生成器 样条工具箱 Partial Dfferential 偏微分方程工具箱 箱 状态流编码Stateflow Coder 器 Statistics 统计工具箱 Toolbox System 动力系统模块集 实时工作问Symbolic Math 符号运算工Ada Ada编码器 Toolbox 实时工作间System 具箱 系统识别工23
Workshop Embedded Coder Requirements Management Interface Robust Toolbox SB2SL(converts models Simulink) 内置编码器 Identification Toolbox 需求管理界Wavelet 具箱 小波工具箱 面 Toolbox Control 鲁棒控制工xPC Target 具箱 模型转换成xPC Target xPC对象 xPC对象内置属性 to Simulink工Embedded 具 Option 此外,MathWorks公司还提供了从网上进行下载安装的MATLAB6.5学生版的免费软件,免费使用期是一个月。下载网址是:http://www.mathworks.com。
1.5 MATLAB的基本操作
24
1.5.1 MATLAB的桌面平台
双击系统桌面的MATLAB图标,启动MATLAB,也可以在开始菜单的程序选项中选择MATLAB快捷方式,还可以在MATLAB的安装路径的bin子目录中双击可执行文件matlab.exe。初次启动MATLAB后,将进入
MATLAB默认设置的桌面平台,如图1.2所示。
图1.2
默认情况下的桌面平台包括5个窗口,分别是MATLAB主窗口、命令窗口、历史窗口、当前目录窗口和工作空间窗口。下面分别对各窗口做简单介绍。
25
1.MATLAB主窗口
MATLAB 6.5的主窗口包含其他的几个窗口。主窗口不能进行任何计算任务的操作,只用来进行一些整体的环境参数的设置。它主要包括6个下拉菜单和10个按钮控件。
10个按钮控件的功能如下:
新建或打开一个MATLAB文件; 剪切、复制或粘贴已选中的对象; 撤销或恢复上一次操作; 打开Simulink主窗口; 打开MATLAB的帮助系统;
6个下拉菜单分别是【File】、【Edit】、【View】、【Web】、【Window】和【Help】。这里只简单介绍与基本操作有关的内容。
26
单击【File】下拉菜单,点击【Set Path】,会弹出图1.3所示的对话窗口,点击【Add Folder】,浏览文件夹,找到需要运行程序所在的文件夹位置,按【确定】后窗口中就会新添一条用户设置的路径,按【Save】和【Close】,退出对话窗口,以后只要在命令窗口中键入该路径下的MATLAB应用程序,就可以正常运行,不会出现找不到路径的错误了。这是因为MATLAB的一切操作都是在它的搜索路径(包括当前路径)中进行的,如果调用的函数在搜索路径之外,MATLAB则认为此函数并不存在。因此,必须把应用程序所在的目录扩展成MATLAB的搜索路径。
单击【File】下拉菜单,点击【Preferences】,会弹出图1.4所示的对话窗口,可以对各窗口的字体、字号、字符颜色、数据显示格式、图形复制等很多属性进行设置。这里不进行详细介绍。
27
图1.3 图1.4
单击【File】下拉菜单,点击【New】,再点击【M-file】,会弹出文本编辑窗口,用户可以编写自己的MATLAB应用程序(M文件和M函数)。
单击【Edit】下拉菜单,点击【Clear Command Window】,可以清除命令窗口中的所有内容,窗口中只剩下命令提示符“>>”。
单击【View】下拉菜单,点击【Desktop Layout】,再点击【Default】,MATLAB就恢复默认的桌面平台设置。 2.命令窗口
28
在MATLAB的命令窗口中,“>>”为运算提示符,表示MATLAB正处在准备状态,接受用户的输入指令。当在提示符后输入MATLAB通用命令、MATLAB函数(M函数)、MATLAB应用程序(M文件)和一段MATLAB表达式等,按【Enter】键后,MATLAB将进行系统管理工作以及进行数值计算、给出计算结果,如果指令集中调用了MATLAB绘图命令,将会弹出图形窗口,显示计算结果的数学图形。指令完成之后,MATLAB再次进入准备状态。
在MATLAB的基本函数库(表1.2)中,有MATLAB通用命令和许多其他的MATLAB函数。如果用户一旦发现某个指令不知如何使用时,可以用help命令将该指令紧跟于后,系统便会告诉该指令的意义和使用方法。例如:
>> help sin
29
SIN Sine.
SIN(X) is the sine of the elements of X.
表1.2
库 内 容 MATLAB基本函数库 库 名 库 内 容 矩阵线性代数数据分析函数库 datafun 库 运算符和特殊动态数据交换库 dde 字符库 初等数学函数库 elfun 二维图形库 特殊图形函数基本矩阵库 elmat 库 时间日期函数库 timefun 非线性数值方法funfun 库 函数库 三维图形库 多项式和插值polyfun graph3d specgraph graph2d ops matfun 库 名 30
稀疏矩阵函数通用命令库 general 库 特殊数学函数数据类型库 datatypes 库 通用图形函数库 graphics 低层输入/出函iofun 数库 库 MATLAB演语言结构函数库 lang 示库 又例如,在MATLAB下进行基本数算,只需将运算式直接打入提示号之后,并键入【Enter】键即可。
>> (10*19+2/4-34)/2*3 ans = 234.7500
31
sparfun specfun 字符串函数库 strfun 用户界面工具Guitools demos (Enter)
MATLAB会将运算结果直接存入一变量ans,代表MATLAB运算后的答案,并在屏幕上显示其数值。
MATLAB可以将计算结果以不同的精确度的数字格式显示,单击主窗口的菜单【File】,点击【Preferences】,弹出窗口后,再点击Command Window,在Numerical Format下拉选项框中,选中“format short”,这就是系统默认的数据格式。
如果在上例中数算式的结尾加上“;”,则计算结果不会显示在命令窗口上,要得知计算值只须键入表示这一数算式的变量名即可。例如:
>> a=(10*19+2/4-34)/2*3; (Enter) a= 234.7500
3.命令历史窗口
32
在默认设置下,历史窗口中会保留自安装起所有命令的历史记录,并标明使用时间,这方便了使用者的查询。双击某一行命令,即在命令窗口中执行该行命令。
4.当前目录窗口
在当前目录窗口中可显示或改变当前目录,还可以显示当前目录下的文件并提供搜索功能。在此窗口中,显示并改变当前目录的控件,与主窗口中的路径显示控件完全相同。
路径。
5.工作空间窗口
工作空间窗口是MATLAB的重要组成部分。在工作空间窗口中将显示目前内存中所有的MATLAB变量的变量名、数据结构、字节数以及类型,不同的变量类型分别
33
设置当前
对应不同的变量名图标。
工作空间窗口的工具栏由5个部分组成,他们是4个按钮控件和1个下拉菜单。
保存工作空间中的所有数据; 打开已保存的MATLAB数据文件; 打开所选数据的矩阵编辑器; 删除所选数据;
MATLAB在执行M文件时,将把该M文件的数据保存到其对应的工作空间中。为了区别,命令窗口的工作空间(也包括全局变量的工作空间)被标记为基本工作空间(Base)。因此,此控件用于调试M文件时实现不同工作空间之间的切换。
1.5.2 MATLAB的使用技巧
34
1. MATLAB的通用命令
使用MATLAB之前,应该熟悉一些常用的MATLAB通用命令,通用命令用于对MATLAB系统的管理。表1.3给出了MATLAB通用命令库中的部分命令。
表1.3
命 令 命令说明 显示或改变工作cd 目录 显示变量或文dir 显示目录下文件 disp 字内容 type 显示文件内容 path 显示搜索目录 保存内存变量clear 清理内存变量 save 到指定文件 hold 图形保持开关 通用命令表
命 令 命令说明 35
加载指定文件clf 清除图形窗口 load 中的变量 收集内存碎片, pack 扩大内存空间 diary quit/eclc 清除工作窗 xit 工作窗信息显示echo 开关 help 在线帮助 dos unix ! 命令 执行dos命令 执行unix命令 显示指定的在线帮助工作台 k 在HELP里搜索关lookfor 键字 which 件 what matlab文件 定位函数或文MATLAB 调用操作系统 退出 日志文件命令 helpwin 在线帮助窗口 helpdes36
获取或设置搜demo 运行演示程序 path 索路径 readme 显示Readme文件 ver 版本信息 显示当前的工who 显示当前变量 pwd 作目录 显示当前变量的详compwhos 细信息 例如,当要暂时离开MATLAB,去执行操作系统(例如Dos)的指令而后还要再进入MATLAB时,则可以利用惊叹号“!”加上想要执行的操作系统的指令,如!dir等。
又例如,要结束MATLAB的运行,可以采用下列三种方法之一: 键入quit命令;
37
显示计算机类型 uter 键入exit命令;
直接关闭MATLAB的命令窗口(Command window)。
2. 一些常用操作技巧
在MATLAB的使用过程中,通过使用常用键盘按键技巧可以使命令窗口的行操作变得简单容易。
表1.4
键盘按说 明 键 Ctrl+p,调用↑ 上一行 Ctrl+n,调用↓ 下一行 end 于当前行末尾 home 于当前行开头 Ctrl+e,光标置Ctrl+a,光标置键盘按键 说 明 常用操作键
38
Ctrl+b,光标← 左移一个字符 Ctrl+f,光标→ 右移一个字符 Ctrl+l,光标Ctrl+← 左移一个单词 Ctrl+r,光标Ctrl+→ 右移一个单词 backspace del esc Ctrl+u,清除当前输入行 Ctrl+d,删除光标处的字符 Ctrl+h,删除光标前的字符 Alt+backspace 恢复上一次删除 例如,MATLAB利用了↑↓二个游标键,可以将所用过的指令叫回来重复使用。按下↑则前一次指令重新出现,之后再按Enter键,即再执行前一次的指令。而↓键的功用则是往后执行指令。其它在键盘上的几个键,如→、←、Delete、Insert,其功能则显而易见,无须多加说明。
39
另外,Ctrl-C(即同时按Ctrl及C两个键)可以用来中止执行中的MATLAB程序。 3. 标点
在MATLAB语言中,一些标点(表1.5)被赋予特殊的意义或代表一定的运算,他们被MATLAB变量和语句所应用,例如“:”和“,”在矩阵和语句中有不同的含义。
表1.5
标 定 义 点 冒号,具有多种应用: 功能 分号,区分行及取消; 运行显示等 … 续行符 . 及域访问符等 小数点,小数点标 点 定 义 运算符和特殊字符库
40
逗号,区分列及函数, 参数分隔符等 括号,指定运算过程( ) 中的先后次序等 方括号,矩阵定义的[ ] 标志等 大括号,用于构成单{ } 元数组等
百分号,注释标% 记 惊叹号,调用操! 作系统运算 = 等号,赋值标记 单引号,字符串' 的标示符等 1.5.3 MATLAB的帮助系统
MATLAB的帮助系统大致可分为联机帮助系统、命令窗口查询帮助系统和联机演示系统三大类,用户在学习MATLAB的过程中,理解、掌握和熟练运用这些帮助是非常重要的。下面主要对命令窗口查询帮助系统进行介
41
绍。
命令窗口查询帮助主要可以分为help系列、lookfor命令和其他常用帮助命令。 1.help系列
help系列的帮助命令有help,help+函数(类)名,helpwin及helpdesk,其中后两者是用来调用联机帮助窗口的。 (1) help
help命令是最为常用的命令。在命令窗口中直接输入help命令,将会显示当前的帮助系统中所包含的所有项目,即搜索路径中所有的目录名称。 (2) help+函数(类)名
在实际应用中,这是最有用的一个帮助命令,可以辅助用户进行深入的学习。 【例1.1】>> help log
42
LOG Natural logarithm.
LOG(X) is the natural logarithm of the elements of X.
Complex results are produced if X is not positive. See also LOG2, LOG10, EXP, LOGM. 2.lookfor函数
当知道某函数的函数名而不知其用法时,help命令可帮助用户准确地了解此函数的用法。然而,若要查找一个不知其确切名称的函数名时,可以用lookfor命令来查询根据用户提供的关键字搜索到的相关函数。 【例1.2】>> lookfor Euler
RIGIDODE Euler equations of a rigid body without external forces.
EULER Simulink 1.x EULER integration algorithm. BWEULER Compute the Euler number of binary image.
43
eulerfs.m: % function
[ttab,xtab]=eulerfs(plant,t,x0,u0,h,p1,p2,p3,p4,p5)
lookfor的查询机理为:它对MATLAB搜索路径中的每个M文件的注释区的第一行进行扫描,一旦发现此行中含有所查询的字符串,则将该函数名及第一行注释全部显示在屏幕上。由此机理,用户也可在自己的文件中加入在线注释。 3.其他帮助命令
MATLAB中还有一些可能会常用到的查询、帮助命令,如下所示。
exist
变量检验函数
what 目录中文件列表 who
内存变量列表
whos 内存变量详细信息 which 确定文件位置
44
二 MATLAB变量与表达式
2.1 MATLAB的变量 2.1.1 数据类型
数据是计算机程序处理的对象。数据可能是整数、实数、复数、数值矩阵或者是字符、字符串等,他们占用的计算机内存大小显然是不同的。为了数据存储和处理的需要,编译程序将数据划分成不同的类型,并规定了每一种类型数据在内存的存储单元字节数和对该类型数据所能进行的运算。
然而,在MATLAB程序语言中,数据的类型是相同的,对用户而言只有一种。
MATLAB是一种面向矩阵的编程语言,它将任何数据都看成是矩阵:一个实数是虚部为零的复数,一个复数
45
是1×1的数值矩阵;数量、向量和字符串等是特殊的矩阵;一个N×M的数据矩阵由N×M个复数元素构成。矩阵的类型可以是复数型矩阵、实数型矩阵或由字符组成的字符型矩阵。
在MATLAB中,所有数据都是以阵列的形式存在的,该阵列称为MATLAB Arrays。
由此可见,在MATLAB中,矩阵的各种数据类型在语法上是完全相同的。因此,用MATLAB语言编程十分简洁。
MATLAB实现变量数据类型的统一,在很大程度上简化了程序设计。用户不需要事先声明、指定所使用变量的类型、定义变量的维数,MATLAB会自动根据所赋予变量的值或对变量所进行的操作来确定变量的类型和维数;在赋值过程中,如果变量已存在,MATLAB语言将使用新值代替旧值,并以新的变量类型和维数代替旧的变
46
量类型和维数。 2.1.2 变量类型
在MATLAB中,简单变量就是1×1的矩阵变量,向量就是n×1或1×m的矩阵变量,简单变量、向量和矩阵变量在类型上也是统一的。因此,MATLAB的基本变量就是矩阵型变量。在下面的内容中,如果不需要特别区分,约定变量就是指矩阵变量(含1×1矩阵变量),常量就是指矩阵常量(含1×1矩阵常量)。 2.1.3 存储形式
MATLAB矩阵数据都是以列(column)为先的阵列形式存储的,如同Fortran语言的规则一样。例如,给出一个字符串矩阵:
a=['house'; 'floor'; 'porch']
a =
house
47
f loor porch
size(a)
它的大小是
ans =35
它在内存单元中的存储顺序是: h f
2.1.4 变量命名规则
在MATLAB语言中,变量的命名遵守如下规则: (1)变量名以英文字母开头(即第一个字符必须为英文字母),变量名中可包含字母、数字和下划线“_”,但不能包含空格符和其它标点符号。
例如, V_31为合法变量名,但V-31,V 31, V=31, V+31,V—31等都不是合法的变量名。 (2)变量名中的字母区分大小写。
48
p o l o u o r s o c e r h 例如,单一字母X 和x 、A和 a是不同的变量名,MAT_LAB、MAT_lab和mat_lab等是完全不同的变量名。
(3)变量名长度不能超过31个字符(第31个字符之后的字符将被忽略)。
例如,V31为合法变量名。
需要说明的是,MATLAB语言与其他的程序设计语言一样,也存在变量作用域的问题。在未加特殊说明的情况下,MATLAB语言将所识别的一切变量视为局部变量,即仅在其调用的函数内有效。若要定义全局变量,应对变量进行声明,即在该变量前加关键字global。一般来说,全局变量习惯用大写的英文字符表示,以便记忆和理解。
2.1.5 MATLAB预定义的变量
MATLAB有一些预定义的变量,表2.1给出了
49
MATLAB语言中经常使用的一些预定义的变量及其说明。
表 2.1 变 量 ans MATLAB预先定义的变量
含 义 预设的计算结果的变量名 MATLAB定义的正的极小值eps 2.2204e-16 pi inf NaN i 或 j realmax realmin nargin 内建的π值 ∞值,无限大 ( 1/0) 无法定义的一个数 (0/0) 虚数单位i = j = 1 最大的正实数1.7977e+308 最小的正实数2.2251e-308 函数输入参数的个数 50
nargout flops 函数输出参数的个数 浮点运算次数 2.2 MATLAB的表达式 2.2.1 表达式
MATLAB数值计算语句是由表达式和变量等组成(即MATLAB是表达式语言),用户输入的语句由MATLAB系统直接解释运行,因此,变量和表达式是使用MATLAB进行数值计算的基础。MATLAB语句有2种最常见的形式:
1 表达式 2 变量=表达式
表达式由运算符、函数、变量和数字组成。MATLAB书写表达式的规则与“手写算式”几乎完全相
51
同。表达式在MATLAB中占有很重要的地位,几乎所有的数值计算都必须借助它来进行。
在第一种形式中,表达式运算后产生的结果由MATLAB系统自动赋给名为ans的变量,并显示在屏幕上。ans是一个默认的预定义变量名,它会在以后的类似操作中被自动覆盖掉。所以,对于在后续的计算中将要用到的重要结果,一定要记录下来,应该使用第二种形式的语句(赋值语句)。
在第二种形式中,等号右边的表达式计算后产生的结果由MATLAB系统将其赋给等号左边的变量后放入内存中,并显示在屏幕上。 【例2.3】
>> 2*sin(pi/4)+3.^2-sqrt(9)
ans = 7.4142
52
>> w=2*sin(pi/4)+3.^2-sqrt(9) w = 7.4142
注意:
(1)在书写表达式时,运算符两侧允许有空格,以增加可读性。表达式的末尾可以加上“;”,也可以不加。
(2)如果一个指令过长可以在结尾加上省略号“...”(代表此行指令与下一行连续),剩余部分在下一行继续写完。例如
>> S=3*... 6+5 S = 23
(3)MATLAB常用算符
+ 加法、- 减法 、^ 幂、 * 乘法、 / 右
除 、 \ 左除
53
在矩阵运算中有左除和右除的区别,对于数字运算则没有区别。
2.2.2 数据的输出格式
在MATLAB语言中的数值有多种显示形式。在默认情况下,若数据为整数,则以整型表示;若为实数,则以保留小数点后4位的浮点型表示。
在MATLAB系统中数据的储存和计算都是以双精度进行的,但是用户可以改变数据在屏幕上显示的格式,即可以用format命令控制MATLAB的输出格式。应该注意,format命令只影响数据在屏幕上的显示结果,而不会影响数据在MATLAB内的存储和运算。具体应用方法如表2.2所示。
表2.2
format数据输出格式
/5位定点表示。 例如 1.4142
format short format long 15位定点表示。例如 1.41421356237310 format short e 5位浮点表示。 例如 1.4142e+000 15format long e 1.414213562373095e+000 系统选择5位定点和5位浮点中更好的表format short g 示 系统选择15位定点和15位浮点中更好的format long g 表示 近似的有理数的表示。例如 sqrt(2)=1393format rational /985 十六进制的表示。 例如 format hex 3ff6a09e667f3bcd format +(plus) 表示大矩阵是分别用+、-和空格表示矩阵位浮点表示。例如 55
中的正数、负数和零。 format bank format 变量之间没有空行。 compact format loose 另外,MATLAB提供在对话框中选择显示格式,这在概述中已经介绍过了。 2.2.3 MATLAB常用数学函数
在MATLAB中,常用的数学函数包括三角函数和双曲函数、指数函数、复数函数、归整函数和求余函数、矩阵变换函数和其他函数。具体函数名称和含义见表2.3-表2.8。
表2.3
三角函数和双曲函数(弧度) 变量之间有空行。 用元、角、分(美制)定点表示。例如 1.41 56
含 名 称 含 义 名 称 含 义 名 称 义 反双曲正sin 正弦 csc 余割 atanh 切 反双曲余cos 余弦 asec 反正割 acoth 切 tan cot 正切 余切 acsc sinh 反余割 双曲正弦 sech csch 双曲正割 双曲余割 反双曲正asin 反正弦 cosh 双曲余弦 asech 割 反双曲余acos 反余弦 tanh 双曲正切 acsch 割 四象限反atan 反正切 coth 双曲余切 atan2 正切 57
反双曲正acot 反余切 asinh 弦 反双曲余sec 正割 acosh 弦 表2.4 名 名 称 含 义 称 e为底的exp 指数 log10 对数 2为底的log 自然对数 log2 对数 表2.5
复数函数
sqrt 平方根 10为底的pow2 2的幂 含 义 名 称 含 义 指数函数
58
名 含 义 称 abs angle 绝对值 相角 conj 复数共轭 real 复数实部 名 称 含 义 名 称 含 义 imag 复数虚部 表2.6
名 称 ceil fix floor mod 含 义 向+∞归整 向0归整 向-∞归整 模除求余 归整函数和求余函数
名 称 rem round sign 含 义 求余数 向靠近整数归整 符号函数 表2.7
名 称 含 义 矩阵变换函数
名 称 含 义 59
fiplr fipud fipdim 矩阵左右翻转 矩阵上下翻转 矩阵特定维翻转 矩阵反时针90o翻diag tril triu 产生或提取对角阵 产生下三角 产生上三角 rot90 转 表2.8
名 称 min mean std sort 含 义 最小值 平均值 标准差 排序 欧氏norm (Euclidean)长 其他函数 名 称 max median diff length 含 义 最大值 中位数 相邻元素的差 个数 sum 总和 60
度 prod cumsum cross
总乘积 累计元素总和 外积 dot 内积 cumprod 累计元素总乘积 61
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuoyibo.net 版权所有 湘ICP备2023021910号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务