第一章 MATLAB基础
1.1 MATLAB简介
1.1.1 MABLAB的发展历程
MATLAB名称由Matrix和Laboratory两词的前三个字母组合而成,顾名思义其主要功能是矩阵运算,其首创者是Cleve Moler教授。1980年前后,当时的新墨西哥大学计算机系主任 Moler 教授在讲授线性代数课程时,发现了用其他高级语言编程极为不便,便构思并开发了MATLAB,这一软件利用了当时数值线性代数领域最高水平的EISPACK和LINPACK两大软件包中可靠的子程序,用Fortran 语言编写了一套集命令翻译、科学计算于一身的交互式软件系统。该语言无需像C和Fortran语言那样编写源程序、编译、连接,最终形成可执行文件。早期的MATLAB是用Fortran语言编写的,只能作矩阵运算,绘图也只能用极其原始的方法,内部函数也只提供了几十个。1984年,Cleve Moler和John Little等人成立了MathWorks公司,正式将MATLAB推向市场。从此MATLAB的内核采用C语言编写,除了原有的数值计算能力外,还增加了丰富多彩的图形图像处理、多媒体功能、符号运算和与其他流行软件的接口功能,使得 MATLAB 的功能越来越强大。MATLAB以其良好的开放性和运行的可靠性,使很多领域的封闭式的数值计算软件包纷纷被淘汰,而改在MATLAB平台上重建。20世纪90年代,MATLAB已经成为国际控制界公认的标准计算软件,在国际上30多个数学类科技应用软件中,MATLAB在数值计算方面独占鳌头。
MathWorks公司于1993年推出了具有划时代意义的基于Windows平台的MATLAB 4.0 版本,使之应用范围越来越广。1994年推出的4.2版本扩充了4.0版本的功能,尤其在图形界面设计方面更提供了新的方法。1997年推出了MATLAB 5.0版,定义了更多的数据结构,如单元数据、数据结构体、多维矩阵、对象与类等,使其成为一种更方便编程的语言。1999年初推出的MATLAB 5.3版在很多方面又进一步改进了MATLAB 语言的功能。 2000 年10月底推出了其全新的MATLAB 6.0正式版,在核心数值算法、界面设计、外部接口、应用桌面等诸多方面有了极大的改进。2002年夏推出的MATLAB 6.5版,其最大特点是采用了JIT加速器,使MATLAB的运算速度进一步加快。2005年9月发布的MATLAB 7.1完整版,提供了MATLAB、Simulink的升级以及其他最新的75个模块的升级,并具有用于数据分析、大规模建模、固定点开发、编码等的新特征。2007年秋天发布了MATLAB 7.4版本,该版本对以前版本的很多模块做了升级改进,同时增加了MATLAB Builder for ,扩展了MATLAB Compiler的功能,使网络程序员可以通过C#,VB等语言使用MATLAB。
虽然MATLAB是计算数学专家倡导并开发的,但其普及和发展离不开自动控制领域学者的贡献,因为在MATLAB的发展进程中,许多有代表性的成就与控制界的要求是分不开的,其大多数工具箱也都是有关控制方面的。MATLAB具有强大的数学运算能力、方便实用的绘图功能及语言的高度集成性,它在其他科学与工程领域的应用也是越来越广,并且有着更广阔的应用前景和无穷无尽的潜能。MATLAB是一个十分有效的工具能解决在教学与研究中遇到的问题,可以将使用者从繁琐、无谓的底层编程中解放出来,
把有限的宝贵时间更多地花在解决问题中,大大提高工作效率。目前,MATLAB已经成为国际上最流行的科学与工程计算的软件工具,它不仅是一个“矩阵实验室”和一张“手写式计算纸”,而且已经成为了一种具有广泛应用前景的全新的计算机高级编程语言,有人称它为“第四代”计算机语言,它在国内外高校和研究部门正扮演着重要的角。MATLAB语言的功能也会越来越强大,不断适应新的要求提出新的解决方法,将长期在科学运算、自动控制与科学绘图领域处于重要地位。
1.1.2 MATLAB平台的组成
MATLAB不仅仅是一门编程语言,还是一个集成的软件平台,包含以下几个主要部分。
1.MATLAB语言
MATLAB是一种高级编程语言,它提供了多种数据类型、丰富的运算符和程序控制语句供用户使用。用户可以根据需求,按照MATLAB语言的约定,编程完成特定的工作。
2.MATLAB集成工作环境
MATLAB集成工作环境包括程序编辑器、变量查看器、系统仿真器和帮助系统等。用户在集成工作环境中可以完成程序的编辑、运行和调试,输出和打印程序的运行结果。
3.MATLAB图形系统
用MATLAB的句柄图形,可以实现二维、三维数据的可视化、图象处理,也可以完全或局部修改图形窗口,还可以方便的设计图形界面。
4.MATLAB数学函数库
MATLAB提供了丰富的数值计算函数库,既包括常用的数学函数,又包含了各个专业领域独有的数值计算实现,用户可以通过简单的函数调用就可以完成复杂的数学计算任务。
5.Simulink交互式仿真环境
通过交互式的仿真环境Simulink,用户可以采用图形化的数学模型,完成对各类系统的模型建立和系统仿真,仿真结果也能够以直观的图形方式显示。Simulink可以接受用户的键盘鼠标输入,也可以通过程序语句来实现数据交换,应用方便灵活。
6.MATLAB编译器
通过编译器,可以将用MATLAB语言编写的程序编译成脱离MATLAB环境的C源代码、动态连接库或者可以独立运行的可执行文件。
7.应用程序接口API
这是MATLAB的应用程序接口,它提供了MATLAB和C、Fortran、VB、VC等多种语言之间的接口程序库,使用户可以在这些语言的程序里调用MATLAB程序。
8.MATLAB工具箱
MATLAB包含了各种可选的工具箱。工具箱则是由各个领域的高水平专家编写的,所以用户不必编写该领域的基础程序就可以直接进行更高层次的研究。例如:控制领域可以使用的工具箱就有Control System (控制工具箱)、System Identification(系统辨识工具箱)、Robust Control(鲁棒控制工具箱)、Optimization(最优化工具箱)等。
9.Notebook工具
Notebook能够让用户在Word环境中使用MATLAB的各种资源,为用户营造容文字处理、科学计算、工程设计于一体的完美的工作环境。用Notebook制作的M-Book文档不仅拥有Word的全部字处理功能,而且具备MATLAB的数学运算能力和计算结果可视化的能力。
1.1.3 MATLAB语言的特点
MATLAB被称为第四代计算机语言,利用其丰富的函数资源,可使编程人员从繁琐的代码中解脱出来。MATLAB用更直观、符合人们思维习惯的代码,代替了C语言的冗长代码,给用户带来的是最直观、最
简洁的程序开发环境。MATLAB语言的主要特点是:
1.语言简洁紧凑,语法限制不严格,程序设计自由度大,使用方便灵活。
在MATLAB里可以不用先定义或声明变量就可以使用它们,MATLAB程序的书写格式自由,数据的输入、输出语句简洁,很短的代码就可以完成其它语言要经过大量代码才能完成的复杂工作。
例如:A=[1 2 3;4 5 6;7 8 9]一条语句实现了对3×3矩阵的输入。
2.数值算法稳定可靠,库函数十分丰富。
MATLAB的一个最大特点是强大的数值计算能力,它提供了许多调用十分方便的数学计算的函数,我们可以随意使用而不必考虑数值的稳定性。
例如:e=eig(A) %求矩阵A的特征值
[L,U]=lu(A) %求矩阵A的LU分解,
polyder(b) %求多项式b的微分
3.运算符丰富。
MATLAB是用C语言编写的,所以MATLAB提供了和C语言几乎一样多的丰富的运算符,而且还重载了一些运算符,并给它们赋予了新的含义。
例如:C=A*B  %矩阵的乘法
B=C’  %求矩阵C的共轭复转置
x=A\B      %求Ax=B的最小二乘解,即矩阵的左除
4.MATLAB既具有结构化的控制语句(if、for、while),又支持面向对象的程序设计。
5.程序的可移植性好。
MATLAB程序几乎不用修改就可以移植到其它机型和操作系统中运行。
6.MATLAB的图形功能强大,支持数据的可视化操作,方便的显示程序的运行结果。
7.源程序的开发性,系统的可扩充能力强。
除了内部函数外,所有的MATLAB核心文件和工具箱文件都提供了MATLAB源文件,用户可通过对源文件的修改生成自己所需要的工具箱。
8.MATLAB是解释执行语言。
MATLAB程序不用编译生成可执行文件就可以运行,程序是解释执行的,解释执行的程序执行速度较慢,效率比C等高级语言要低,而且无法脱离MATLAB环境运行,这是MATLAB的缺点。但是MATLAB的编程效率远远高于一般的高级语言,这使我们可以把大量的时间花费在对控制系统的算法研究上,而不是浪费在大量的基础代码上,这是MATLAB能够被广泛应用于科学计算和系统仿真的主要原因。
1.2 MATLAB的安装和使用
1.2.1 MATLAB的安装
MATLAB能够运行于多种机型(IBM-PC、Macintosh、Unix工作站)和操作系统(Windows XP、Windows 2000、Linix),本节仅介绍其在PC机上的安装和使用。要在PC上流畅运行MATLAB,PC机要具有较好的硬件配置,推荐的配置是:CPU主频大于2.0GHz,内存大于1G Byte,安装空间大于3G Byte。下面基于MATLAB 7.1版本介绍其安装过程。
将MATLAB安装光盘插入光驱后,会自动启动“安装向导”。如果没有自动启动“安装向导”,用户需要运行安装光盘中的应用程序来启动安装向导。安装过程中,用户按照向导的提示进行操作即可,其中比较重要的输入和选项包括:
图1.2.1 MATLAB安装组件选择界面
z授权序列号
需要输入软件供应商提供的授权序列号才能继续完成安装工作。
z安装路径
根据磁盘的规划情况,输入MATLAB要安装到的磁盘和路径,建议安装在非系统盘。
z工具箱选择
MATLAB软件包含大量的工具箱,要完全安装所有MATLAB组件大概需要2.4G以上的磁盘空间。用户可以根据需要选择所要安装的工具箱,如果磁盘空间足够,建议用户选择完全安装。如果磁盘空间有限,则可以先选择通用的工具包,再选择和自己专业相关的工具包即可。常用的通用工具包有: z MATLAB    核心组件,必须选择
z SIMULINK    交互式仿真工具,采用方框图方式建模和仿真
z Symbolic Math    符号计算工具
z Optimization    优化程序
z MATLAB Compiler    将MATLAB的m文件编译成dll或者exe文件
z MATLAB C/C++ Math Library 供C/C++调用的MATLAB数学函数库
z MATLAB C/C++ Grahpic Library 供C/C++调用的MATLAB图形函数库
1.2.2 MATLAB操作桌面
MATLAB软件安装完成后,会在PC机的桌面上创建一个快捷方式图标,双击该图标就可以启动
MATLAB 7.1.
MATLAB操作桌面(MATLAB Desktop)。MATLAB操作桌面是用户和MATLAB进行交互的集成平台,其默认的外观如图1.2.2所示,操作界面主要包括以下几个界面:
图1.2.2 MATLAB的操作桌面
z命令窗口(Command Window)
MATLAB的命令窗口缺省情况下位于操作桌面的右侧,可以用鼠标点击命令窗口标题栏的图标使之成为一个单独的窗口。命令窗口的系统提示符是两个大于号,即>>,在提示符后可以输入要执行的命令,用【回车】按键确认后,输入的命令才会被执行。MATLAB的命令窗口可以执行MATLAB语句、函数、命令和程序,也可以执行外部应用程序(外壳程序),同时还能显示程序的运行结果。
例1.2.1 命令窗口输入指令
>>A=[1,2;3,4] %输入一个2×2的矩阵
>>dir %MATLAB的列目录命令
>>!calc      %用!命令符号执行windows系统的计算器程序
z历史命令窗口(Command History)
在默认情况下,历史命令窗口位于MATLAB操作桌面的左下侧,如图1.2.3所示。历史命令窗口记录
了用户在MATLAB命令窗口中所有输入过的指令行,包括以前启动MATLAB时所输入的指令。
图1.2.3 MATLAB的历史命令窗口
历史命令窗口中,用户可以进行如下操作:
(1) 单行或者多行指令的复制。用鼠标点亮需要复制的指令,单击鼠标右键在菜单中选择【Copy】选项。
(2) 单行指令的再运行。用鼠标左键双击要运行的指令。
(3) 多行指令的再运行。用鼠标点亮要运行的多行指令,然后单击鼠标右键在菜单中选择【Evaluate Selection】即可按顺序运行点亮的多行指令。
(4) 将指令保存为M文件。通过鼠标右键菜单的【Create M-File】选项来实现。
z当前目录浏览器(Current Directory Browser)
当前目录浏览器如图  1.2.4所示,当前目录浏览器的左上角的编辑框内的路径表示的是当前路径,MATLAB搜索/保存/打开文件,首先要在当前目录中查相关文件。
图1.2.4 MATLAB的当前目录浏览器
当前目录浏览器可以进行如下操作:
(1) 修改当前路径;
(2) 打开在当前路径中的MATLAB文件;
(3) 文件管理。
z工作空间浏览器(Workspace)
工作空间浏览器位于MATLAB操作桌面的左上侧,用来查看MATLAB环境中的变量情况,图1.2.5所示的工作空间窗口,表示用户创建了二维数组A、b和程序运行的中间结果变量ans。
图1.2.5 MATLAB的工作空间窗口
z M文件编辑器/调试器(Editor/Debugger)
MATLAB内置了程序的编辑/调试器,如图1.2.6所示,在编辑/调试器里可以建立、编辑、存储M文件,
可以运行、调试(断点、单步、跟踪、查看)程序,其使用方法和Turbo C等编程平台的集成环境类似。
图1.2.6 MATLAB的编辑器/调试器
z帮助导航(Help Navigator)
帮助导航是MATLAB的帮助交互系统,用户可以用帮助导航来查到相关主题的帮助内容。帮助导航窗口不随MATLAB主窗口启动,用户可以用F1或者菜单【Help】来打开。
1.3  MATLAB的工作空间
1.3.1 工作空间
工作空间(Workspace)指运行MATLAB的程序或命令所生成的所有变量和MATLAB提供的常量构成的空间,是一个比较抽象的概念。
启动MATLAB后,会自动建立一个工作空间,工作空间在MATLAB运行期间一直存在,关闭MATLAB 后工作空间自动消失。刚打开的MATLAB的工作空间中只有MATLAB提供的几个常量,如pi(3.1415926)、虚数单位i,j等。运行MATLAB程序时,程序中的变量被加入到工作空间中,除非用特殊的命令删除某变量,否则该变量在关闭MATLAB之前一直存在。
用户可以使用工作空间在多个MATLAB应用程序中传递数据,也可以随时用工作空间浏览器查看变量名及变量的值。
1.3.2 内存变量的查阅和删除
1.使用MATLAB指令查看和删除内存变量matlab难还是c语言难
who%查看工作空间中变量的名字
whos%查看工作空间中变量的详细信息
clear%删除工作空间中的所有变量
clear  v1  v2  vn%删除变量v1,v2和vn
exist  v%变量v是否存在
exist(‘v’) %名字为v的变量是否存在
size(v)%变量的大小
length(v)%求取变量的长度,返回最大维数
例1.3.1 运行下面MATLAB命令,并查看内存变量。
>>clear
>>a=3;
>>b=[1,2,3; 4,5,6];
>>c=b+1;