精通MATLAB(第3版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1章 MATLAB概览

经过三十余年的补充与完善,以及多个版本的升级换代,MATLAB的功能已经变得非常强大和完善,成为一个包含众多工程计算和仿真功能与工具的庞大系统,是目前世界上最流行的仿真计算软件之一。

1.1 MATLAB发展历程

MATLAB的产生是与数学计算紧密联系在一起的。1980年,美国新墨西哥州大学计算机系主任Cleve Moler在给学生讲授线性代数课程时,发现学生在高级语言编程上花费很多时间,于是着手编写供学生使用的Fortran子程序库接口程序,取名为MATLAB(即Matrix Laboratory的前三个字母的组合,意为“矩阵实验室”)。这个程序获得了很大的成功,受到学生的广泛欢迎。

20世纪80年代初期,Moler等一批数学家与软件专家组建了MathWorks软件开发公司,继续从事MATLAB的研究和开发,1984年推出了第一个MATLAB商业版本,其核心用C语言编写。而后,MATLAB又添加了丰富多彩的图形图像处理、多媒体、符号运算,以及与其他流行软件的接口功能,功能越来越强大。

MathWorks公司正式推出MATLAB后,于1992年推出了具有划时代意义的MATLAB 1.0版本;1999年推出的MATLAB 5.3版在很多方面进一步改进了MATLAB的功能,随之推出的全新版本Simulink 3.0也达到了很高的档次;2000年10月推出的MATLAB 6.0版本,在操作界面上有了很大的改观,同时还给出了程序发布窗口、历史信息窗口和变量管理窗口等,为用户提供了极大的方便;2001年6月,MATLAB 6.1版即Simulink 4.1版问世,功能已经十分强大,其虚拟显示工具箱更给仿真结果在三维视景下显示带来了新的解决方案;2003年6月推出了MATLAB Release 13,即MATLAB 6.5/Simulink 5.0,在核心数值算法、界面设计、外部接口和应用桌面等诸多方面有了极大的改进;2004年9月正式推出MATLAB Release 14,即MATLAB 7.0/Simulink 6.0,这是一个具有里程碑式的版本。

此后,几乎形成了一个规律,每年的3月份和9月份推出当年的a和b版本,目前的最新版本是MATLAB 2012b。

MATLAB经过三十多年的研究与不断完善,现已成为国际上最流行的科学计算与工程计算软件工具之一,现在的MATLAB已经不仅仅是最初的“矩阵实验室”了,它已发展成为一种具有广泛应用前景的、全新的计算机高级编程语言,可以说它是“第四代”计算机语言。自20世纪90年代以来,美国和欧洲大学将MATLAB正式列入研究生和本科生的教学计划,MATLAB软件已成为应用代数、自动控制理论、数理统计、数字信号处理、时间序列分析和动态系统仿真等课程的基本教学工具,成为学生所必须掌握的基本软件之一。在设计研究单位和工业界,MATLAB也成为工程师们必须掌握的一种工具,被认为是进行高效研究与开发的首选软件工具。

1.2 MATLAB系统结构

MATLAB系统由MATLAB开发环境、MATLAB数学函数库、MATLAB语言、MATLAB图形处理系统和MATLAB应用程序接口(API)五大部分构成。

1.MATLAB开发环境

MATLAB开发环境是一套方便用户使用的MATLAB函数和文件工具集,其中许多工具是图形化用户接口。它是一个集成的工作空间,允许用户输入输出数据,并提供了M文件的集成编译和调试环境,包括MATLAB桌面、命令窗口、M文件编辑调试器、MATLAB工作空间和在线帮助文档。

2.MATLAB数学函数库

MATLAB数学函数库包括了大量的计算算法,从基本运算,如加法、正弦等,到复杂算法,如矩阵求逆、贝济埃函数和快速傅里叶变换等。

3.MATLAB语言

MATLAB语言是一种高级的基于矩阵/数组的语言,它有程序流控制、函数、数据结构、输入/输出和面向对象编程等特色。用户既可以用它来快速编写简单的程序,也可以编写庞大复杂的应用程序。

4.MATLAB图形处理系统

图形处理系统使得MATLAB能方便地图形化显示向量和矩阵,而且能对图形添加标注和打印。它包括强大的二维、三维图形函数、图像处理和动画显示等函数。

5.MATLAB应用程序接口(API)

MATLAB应用程序接口(API)是一个使MATLAB语言能与C、Fortran、C#、Java等其他高级编程语言进行交互的函数库,该函数库的函数通过调用动态链接库(DLL)实现与MATLAB文件的数据交换,其主要功能包括在MATLAB中调用C、Fortran、C#和Java程序,以及在MATLAB与其他应用程序间建立客户/服务器关系。

1.3 MATLAB工具箱

MATLAB拥有一个专用的家族产品,用于解决不同领域的问题,称之为工具箱(Toolbox)。工具箱用于MATLAB的计算和画图,通常是M文件和高级MATLAB语言集合,使用户可以方便地修改函数和源代码,或增加新的函数。用户还可以结合不同的工具箱中的技术来设计针对某个问题的解决方案。MATLAB每年都会完善或新增一些工具箱,因此,在一般情况下,工具箱的列表不是固定不变的。有关MATLAB工具箱的最新信息可以在http://www.mathworks.com/products中看到。

较为常见的MATLAB工具箱包括:

1.应用数学类工具箱

(1)最优工具箱(Optimization Toolbox)

(2)统计工具箱(Statistics Toolbox)

(3)偏微分方程工具箱(Partial Differential Equation Toolbox)

2.金融类工具箱

(1)金融工具箱(Financial Toolbox)

(2)金融衍生品工具箱(Financial Derivatives Toolbox)

(3)固定收益工具箱(Fixed-Income Toolbox)

3.信号处理类工具箱

(1)信号处理工具箱(Signal Processing Toolbox)

(2)小波分析工具箱(Wavelet Toolbox)

4.控制类工具箱

(1)控制系统工具箱(Control System Toolbox)

(2)系统辨识工具箱(System Identification Toolbox)

(3)鲁棒控制工具箱(Robust Control Toolbox)

5.其他常用的工具箱

(1)符号数学工具箱(Symbolic Math Toolbox)

(2)神经网络工具箱(Neural Network Toolbox)

1.4 MATLAB启动和退出

以Windows操作系统为例,进入Windows后,选择“开始”→“程序”→“MATLAB”,便可以进入如图1-1所示的MATLAB主窗口。如果安装时选择在桌面上生成快捷方式,也可以点击快捷方式直接启动。

在启动MATLAB,命令编辑区显示帮助信息后,将显示符号“>>”,表示MATLAB已准备好,正等待用户输入命令,这时,在提示符“>>”后面键入命令,按“Enter”键,MATLAB就会解释执行所输入的命令,并在命令后面给出计算结果。如果在输入命令后以分号结束,则不会显示结果。

退出MATLAB系统的方式有两种:

(1)在File(文件)菜单中选择“Exit”或“Quit”。

(2)单击窗口右上角的关闭图标“×”。

图1-1 MATLAB主窗口

1.5 MATLAB基本特色

1.5.1 常量与变量

1.常量

常量是指那些在MATLAB中已预先定义其数值的变量,默认的常量如表1-1所示。

表1-1 MATLAB默认常量

2.变量

变量是数值计算的基本单元。与C语言等其他高级语言不同,MATLAB语言中的变量无须事先定义,一个变量以其名称在语句命令中第一次合法出现而定义,运算表达式变量中不允许有未定义的变量;MATLAB也不需要预先定义变量的类型,它会自动生成变量,并根据变量的操作确定其类型。

(1)MATLAB变量命名规则

①变量名区分大小写,因此A与a表示的是不同的变量。

②变量名以英文字母开始,第一个字母后可以使用字母、数字和下画线,但不能使用空格和标点符号。

③变量名长度不得超过31位,超过的部分将被忽略。

④某些常量也可以作为变量使用,如i在MATLAB中表示虚数单位,但也可以作为变量使用。

(2)MATLAB变量的显示

任何MATLAB语句的执行结果都可以在屏幕上显示,同时赋值给指定的变量,没有指定变量时,MATLAB将结果赋值给一个特殊的变量ans。数据的显示格式由format命令控制。format只是影响结果的显示,不影响其计算与存储。MATLAB总是以双字长浮点数(双精度)来执行所有的运算。如果结果为整数,则显示没有小数;如果不是整数,则输出形式可为如表1-2所示的几种形式。

表1-2 MATLAB的数据显示格式

(3)MATLAB变量的存储

①工作空间中的变量可以用save命令存储到磁盘文件中。

键入命令save <文件名>,将工作空间中全部变量存到<文件名>.mat文件中去,若省略<文件名>选项则存入文件matlab.mat中;命令save <文件名> <变量名集>将<变量名集>指出的变量存入文件<文件名>.mat中。

②用命令load可将变量从磁盘文件读入MATLAB的工作空间。

键入命令load <文件名>,将<文件名>指出的磁盘文件中的数据依次读入名称与<文件名>相同的工作空间中的变量中。

若省略<文件名>,则从matlab.mat中读入所有数据。

③用clear命令可清除工作空间中现存的变量。

例1-1 数据的存取。

(1)建立用户目录,并使之成为当前目录,保存数据。

x=[1,2] % 输入数据
mkdir('c:\','my_dir'); %在C盘上创建目录my_dir
cd c:\my_dir %使c:\my_dir成为当前目录
save saf x %选择内存中的x变量保存为saf.mat文件
dir %显示目录上的文件

输出为:

>> In mkdir at 116
...saf.mat

(2)清空内存,从saf.mat向内存装载变量x。

>> clear %清除内存中的全部变量
load saf x %把saf.mat文件中的x变量装入内存
>> who %检查内存中有什么变量
Your variables are:
x

需要注意的是:如果一组数据是经过长时间的复杂计算后获得的,为避免再次重复计算,常使用save加以保存。此后,每当需要,都可通过load重新获取这组数据。这种处理模式常在实际中被采用。

1.5.2 MATLAB基本运算

在MATLAB下进行基本数学运算,只需将运算式直接输入提示符(>>)之后,并按“Enter”键即可。例如:

>> (5*2+1.3+1.8)*10/25
ans = 5.2400

MATLAB会将运算结果直接存入一变量ans,代表MATLAB运算后的答案(answer),并显示其数值于屏幕上。

也可将上述运算式的结果设定给另一个变量x。

>> x=(5*2+1.3+1.8)*10/25
  x = 5.2400

此时MATLAB会直接显示x的值。

MATLAB能识别所有一般常用的加(+)、减(-)、乘(*)、除(/)算术运算符号,以及幂次运算(^)。

需要注意的是:MATLAB将所有变量均存成double的形式,所以不需经过变量定义,MATLAB会自动进行内存的使用和清除,而不必像C语言由使用者一一指定。这些功能使得MATLAB易学易用,使用者可专心致力于编写程序,而不会被软件枝节问题所干扰。

如果不想让MATLAB每次都显示运算结果,只需在运算式最后加上分号(;)即可,如下例。

>> x=(5*2+1.3+1.8)*10/25;

若要显示变量x的值,直接键入x即可:

>> x
x = 5.2400

1.5.3 MATLAB基本函数

1.基本数学函数

MATLAB具有强大的计算功能,它提供了大量的函数,方便使用者进行计算。常用的基本数学函数如表1-3所示。

表1-3 常用的基本数学函数

2.基本三角函数

MATLAB常用的基本三角函数如表1-4所示。

表1-4 常用的基本三角函数

1.5.4 向量

1.向量基本操作

向量是MATLAB的基本运算单元,下面通过例子介绍向量的基本操作。

>> x=[1,2,3,4,5] %以行向量(数组)方式给x赋值
   t=[1;2;3;4;5] %以列向量(数组)方式给t赋值
   y=(x(3)+x(5))/2*x(4) %x(3)调用x中的第3个元素
   z=sqrt(x) %每个元素开方
   u=x*t %向量的内积(u为向量x的模的平方)

输出为:

x = 1 2 3 4 5
t =
    1
    2
    3
    4
    5
y = 16
z = 1.0000 1.4142 1.7321 2.0000 2.2361
u = 55

也可以随意更改、增加或删除向量中的元素,如下例所示:

>> x=[1,2,3,4,5]
   x(2)=20 % 更改第2个元素

输出为:

x = 1 20 3 4 5
x(6)=16 % 加入第6个元素

输出为:

x = 1 20 3 4 5 16
x(2)=[] % 删除第2个元素

输出为:

x = 1 3 4 5 16
2.向量的操作函数

MATLAB提供了常用的向量运算函数,如表1-5所示。

表1-5 常用的向量运算函数

1.6 小结

本章介绍MATLAB的产生与发展过程,对MATLAB的常用工具箱进行了介绍。通过阅读本章,读者对MATLAB的发展历程及基本特点能有一个比较全面的了解。