MATLAB是一门计算语言,它的运算指令和语法基于一系列基本的矩阵运算以及它们的扩展,它还支持复数这一数值元素,这也是MATLAB区别于其他高级语言的最大特点之一,它给许多领域的计算带来了极大的方便。
1.1MATLAB数值类型
MATLAB包括了四种基本数据运算,即双精度数组、字符串数组、元胞数组、构架数组。数值之间的相互转换,这就为其计算功能开辟了广阔的空间。
1.变量与常量
变量,是数值计算的基本单元。
MATLAB中的变量是无须事先定义的,这与C语言等高级语言不同。一个变量以其名称在语句命令中合法出现一次就可以被定义了。运算表达式变量中不允许有未被定义的变量,也不需要预先定义变量的类型,MATLAB会自动生成变量,并根据变量的操作来确定其类型。就这点来看,为使用者的操作提供了方便。
(1)MATLAB变量命名规则
1)变量名区分大小写,也就是说A和a表示的是不同的变量;
2)变量名是以英文字母开始的,第一个字母后面可以使用字母、数字、下划线,但不能使用空格和标点符号;
3)变量名的长度规定:不能超过31位,超过的部分将被忽略处理;
4)某些常量也可以作为变量使用,如i在MATLAB中表示虚数单位,但也可以作为变量使用。
常量,就是指的那些在MATLAB中已预先定义其数值的变量,我们把默认的常量做了一个表格,如下所示:
(2)MATLAB变量的显示
任何MATLAB语句的执行结果都可以在屏幕上显示,同时赋值给指定的变量,没有指定变量时,赋值给一个特殊的变量ans,数据的显示格式由format命令控制。
format只影响结果的显示,不影响其计算与存储。
MATLAB总是以双字长浮点数(双精度)来执行所有的运算。如果结果为整数,则显示没有小数;如果结果不是整数,则输出形式有下图的几种形式:
2.字符串
字符是MATLAB中符号运算的基本元素,也是文字等表达方式的基本元素,在MATLAB中,字符串作为字符数组用单引号(')引用到程序中,还可以通过字符串运算组成复杂的字符串。字符串数值和数字数值之间可以进行相互转化,也可以执行字符串的有关操作。
3.元胞数组
元胞是元胞数组(Cell Array)的基本组成部分。
元胞数组和数字数组很相似,以下标来区分,单元胞数组由元胞和元胞内容两部分组成。用花括号{ }表示元胞数组的内容,用圆括号( )表示元胞元素。
与一般的数字数组不同,元胞可以存放任何类型、任何大小的数组,而且同一个元胞数组中各元胞的内容可以不同。
例1:元胞数组创建与显示实例
解:MATLAB程序代码如下:
A
元胞数组A的第1行用元胞数组标志法建立一个字符串和一个矩阵;第2行用元胞内容编址法,建立一个传递函数和一个由两个元素组成的元胞组,该院包租分别是矩阵和字符串,最后,用celldisp函数显示该元胞数组A。
4.构架数组
与元胞数组相似,构架数组(Structure Array)也能存放各类数据,使用指针方式传递数值。
构架数组由结构变量名和属性名组成,用指针操作符“.“连接结构变量名和属性名。
例如,可用parameter.temperature表示某一对象的温度参数,用parameter.humidity表示某一对象的湿度参数等,因此,该结构数组parameter由两个属性组成。
5.对象
面对对象的MATLAB语言采用了多种对象,如自动控制中常用的传递函数模型对象(tf object)、状态空间模型对象(ss object)和零极点模型对象(zpk object),一些对象之间可以相互转换,例如可以从传递函数模型对象转化为零极点模型对象,这将在后面具体介绍。
1.2关系运算和逻辑运算
除了传统的数学运算外,MATLAB还支持关系运算和逻辑运算。
如果你已经有了一些编程的经验,那对这些运算不会陌生。
作为所有关系表达式和逻辑表达式的输入,MATLAB把任何非0数值当作真,把0当作假。所有关系表达式和逻辑表达式的输出,对于真输出1,对于假输出0.
MATLAB为关系运算和逻辑运算提供了关系操作符和逻辑操作符,如下两表所示:
除此之外,MATLAB还提供了若干关系运算函数和逻辑运算函数,分别如下表所示:
1.3矩阵及其运算
MATLAB最大的特色就是其强大的矩阵计算功能,在MATLAB中所有的计算都是以矩阵为单元进行的,可见矩阵是MATLAB的核心。
1.3.1矩阵的创建
由m行n列构成的数组a称为
当m=n时,矩阵a称为方阵。当
当对角阵的对角线上的元素全为1时,称为单位阵,记为I。
对于
对于a为
矩阵的表示形式和数组相似,它以左方括号”[“开始,以右方括号”]“结束,每一行元素结束用行结束符号(分号”;“)或回车符分割,每个元素之间用元素分割符号(空格或”,“)分隔。建立矩阵的方法有直接输入矩阵元素、在现有的矩阵中添加或删除元素、读取数据文件、采用现有矩阵组合、矩阵转向、矩阵移位及直接建立特殊矩阵等。
例2:矩阵创建实例
解:MATLAB程序代码如下。
>>a=[1 2 3;4 5 6]
运行结果是创建了一个
a = 1 2 3
4 5 6
接着输入:
>>b=[a;11,12,13] %添加一行元素[11,12,13]
运行结果是创建了一个
b = 1 2 3
4 5 6
11 12 13
MATLAB中对矩阵元素的访问如下所示:
MATLAB提供了很多个特殊矩阵的生成,下表列出了一些常用的生成函数,关于其他的特殊矩阵生成函数及其使用格式,请参见联机帮助:
例3:特殊矩阵生成函数使用实例。
解:MATLAB程序代码如下。
>>a=[1,2,3;4,5,6;7,8,9]; b=tril(a) %生成下三角矩阵
运行结果是生成了b矩阵,它是调用下三角矩阵生成函数tril( )生成的a矩阵的下三角矩阵,输出结果如下。
b=1 0 0
4 5 0
7 8 9
1.32矩阵的运算
矩阵与矩阵之间可以进行如下表所示的基本运算。
(注:在进行左除”/“和右除”“时,两矩阵的维数必须相等。)
例4:矩阵基本运算实例。
解:MATLAB程序代码如下。
>>a=[1,2;3,4]; b=[3,5;2,9]; div1=a/b; %矩阵的左除
>>div2=ba %矩阵的右除
两矩阵a与b进行了左除和右除运算,输出结果如下。
div1=0.2941 0.0588 div2=-0.3529 -0.1176
1.1176 -0.1765 0.4118 0.4706
MATLAB提供了多种关于矩阵的函数,下表列出了一些常用的矩阵函数运算。
例5:矩阵函数运算实例。
解:MATLAB程序代码如下。
>>a=[1,3,5;2,4,6;7,9,13]; [b,c]=eig(a) %求取矩阵的特征值和特征向量
通过函数eig( )计算矩阵a的特征向量b和特征值c,输出结果如下。
b=-0.3008 -0.7225 0.2284
-0.3813 -0.3736 -0.8517
-0.8742 0.5817 0.4717
c=19.3341 0 0
0 -1.4744 0
0 0 0.1403
矩阵分解常用于方程求根,下表列出了一些常用的矩阵分解运算。
例6:矩阵分解运算函数使用实例。
解:MATLAB程序代码如下。
>>a=[6,2,1;2,3,1;1,1,1]; [L,U,P]=lu(a) %对矩阵进行LU分解
通过函数lu( )对矩阵a进行LU分解,得到上三角阵U、下三角阵L、置换矩阵P,输出结果如下。
L=1.0000 0 0 U=6.0000 2.0000 1.0000
0.3333 1.0000 0 0 2.3333 0.6667
0.1667 0.2857 1.0000 0 0 0.6429
P=1 0 0
0 1 0
0 0 1
(#)