MATLAB基础及应用(第5版)
上QQ阅读APP看书,第一时间看更新

1.3 矩阵

1.3.1 矩阵的建立

MATLAB把矩阵作为基本运算对象。数值(标量)可被看成1×1的矩阵,矢量(一维数组)可被看成n×1或1×n的矩阵。在MATLAB中,不需要对矩阵的维数和类型进行说明,MATLAB会根据用户所输入的内容进行配置。创建矩阵有以下3种方法。

1.直接输入创建矩阵

通过输入矩阵中每个元素的值来建立一个矩阵,只需以左方括号开始,以逗号或空格为间隔输入元素值,行与行之间用分号或单击〈Enter〉键隔开,最后以右方括号结尾即可。当矩阵中的元素个数比较少时,这种方法非常适用。另外,用 “单引号” 界定的字符或字符串可创建字符矩阵。

例1-6】 创建3×3数值矩阵AB和字符矩阵C

当矩阵较大时,可以分行输入,用〈Enter〉键代替分号,这样的输入形式比较接近线性代数中的矩阵。任何矩阵的元素内部都不能有空格,否则会被MATLAB认为是两个元素。

2.矢量法创建矩阵

矢量可以由冒号和数字产生。其格式为:

说明:矢量是从初值开始,以增量为步长,直到不超过终值的所有元素所构成的序列。步长可缺省,默认为 “1”。当矩阵中的元素很多且有规律时,可通过矢量来建立一个矩阵。其基本格式为:

例1-7】 建立一个10以内的奇数矩阵。

3.函数法创建矩阵

利用函数可快速产生一些特别有用的矩阵,如单位矩阵、随机矩阵及零矩阵等,特殊矩阵如表1-4所示。

表1-4 特殊矩阵

当某一项操作无结果时,MATLAB返回一个空矩阵。空矩阵的大小为零,但其确实存在于工作空间中,可以通过变量名访问。

例1-8】 建立空矩阵A、单位矩阵B、常数矩阵 C、均匀分布随机矩阵 D、正态分布的随机矩阵E、零矩阵F

建立的矩阵将保存在MATLAB的工作区中,并可以随时被调用。如果用户不用clear命令清除它,或对它重新赋值,该矩阵将一直保存在工作区中直到MATLAB关闭为止。另外,矩阵函数中只有一个输入参数,则建立的矩阵为方阵。

1.3.2 矩阵的基本运算

1.矩阵与标量的运算

运算包括加、减、乘、除和乘方运算。矩阵与标量运算是矩阵的每个元素对该标量的运算。MATLAB用符号 “” 计算乘方时,按照矩阵运算规则计算,要求矩阵为方阵;用符号“.” 计算乘方时,按照数组运算规则计算,对矩阵没有限制。

例1-9】 已知矩阵A=,标量b=3,计算A+b、A∗b、A/b和A.b。

2.矩阵与矩阵的运算

(1)加减运算

两个矩阵的维数完全相同时,可以进行矩阵加减法运算。如果两个矩阵的维数不相等,则MATLAB将给出错误信息,提示两个矩阵的维数不相等。

(2)乘法运算

两个矩阵的维数相容时(A的列数等于B的行数),可以进行AB的乘法运算。

(3)除法运算

矩阵的除法运算包括左除和右除两种运算。其中

左除:A\ B=A-1BA为方矩阵。其中A-1=1/A

右除:A/B=AB-1B为方矩阵。其中B-1=1/B

可见,左除和右除的运算过程以及对矩阵的要求是不一样的,其数学意义也不同。

(4)点运算

两个矩阵之间的点运算是按照数组运算规则计算,矩阵的对应元素直接运算。要求参加运算的矩阵大小必须相同。有 “.∗” “./” 和 “.\” 3种运算符。

例1-10】 已知矩阵 A=,矩阵 B=,求 ABA.BA\BA/BA.\BA./B的运算结果。

1.3.3 矩阵的操作

MATLAB中对矩阵的操作提供了多种简便的方法,可以对矩阵进行元素操作、提取子块、合并矩阵、转置等操作。

1.元素操作

MATLAB允许用户对一个矩阵的单个元素进行操作,可以通过元素的下标进行(行、列的序号是从1开始的),修改某些元素的值不会影响其他元素的值。

2.提取子块

提取矩阵的某一部分,可以使用冒号表达式。在MATLAB中,冒号 “:” 表示 “全部”。

例1-11】 输入一个4×3的矩阵,选出前3行构成一个矩阵;选出前两列构成另一个矩阵。

3.矩阵合并

把两个矩阵合并成一个大矩阵,有两种形式:

说明:A矩阵与B矩阵的列数必须相同,B矩阵补在A矩阵的下面。

说明:A矩阵与B矩阵的行数必须相同,B矩阵补在A矩阵的右面。

4.矩阵的转置

用符号 “′”(单引号)可以进行矩阵的转置运算。

5.矩阵的展开

矩阵的展开是按照矩阵在内存中的实际存放形式展开的。矩阵的元素在内存中是按列存放的,即先存放第1列,接着存放第2列……把一个矩阵内的所有元素统一展开成一个列矢量,其指令格式为:

例1-12】 把矩阵A=和矩阵 B=(2 4 6)合并成一个矩阵,再转置后展开。

6.矩阵的线性变换

MATLAB提供了一些矩阵变换函数,可以对矩阵作形式上的变换。矩阵的变换函数如表1-5所示。

表1-5 矩阵的变换函数

例1-13】 建立一个3×3的魔方矩阵,提取其对角元素和下三角矩阵,并上下翻转。

1.3.4 复数和复数矩阵

MATLAB允许在运算和函数中使用复数或复数矩阵。复数的表示借助于特殊的字符 i或j,其值在工作空间中都显示为0+1.0000i。

1.复数

复数可由以下两种方式输入:

其中,3.14为复数幅角的弧度,3为复数的模。

2.复数矩阵

复数矩阵有下列两种表示方法:

两式具有相同的结果。另外,当复数的虚部为一个确定的数值(而不是变量或矩阵)时,输入时可以省略i(或j)前面的 “∗” 符号。另外,如果 i、j被定义为其他变量(例如在程序设计中常常习惯于将i和j作为循环变量),则应定义另一个新的复数单位,如

这里将i1定义成新的复数单位。

1.3.5 稀疏矩阵

在许多工程实践中,经常会出现一些只包含几个非零元素,而其他大量的元素都为零值的矩阵,这种矩阵被称为稀疏矩阵。如果按普通的矩阵处理方法来处理这些矩阵,不但会占用许多存储空间,同时也会严重地影响运行速度。为了避免这些缺点,对于那些具有大量零元素的矩阵,MATLAB采用一种不同于一般矩阵的处理方法,只存储非零元素的数值以及这些元素所对应的下标。例如,设矩阵A=A 是具有稀疏特征的矩阵,其完全存储方式是列存储每个元素,共有 12 个元素,即 2,0,0,0,0,0,3,0,0,1,0,0。其稀疏存储方式为(1,1),2,(2,3),3,(3,2),1。稀疏存储方式占用9个元素空间,当原矩阵更大且更加 “稀疏” 时,稀疏存储方式会更有效地提高空间利用率。

虽然MATLAB对稀疏矩阵采用了特殊的处理,但其各种运算的规则仍然和完全矩阵一样。另外,MATLAB也有专门的函数来处理稀疏矩阵,如表1-6所示。

表1-6 处理稀疏矩阵的主要函数

例1-14】 将矩阵A=转化为稀疏矩阵B,并察看;再将稀疏矩阵B转化为完全矩阵C