MATLAB把矩阵作为基本运算对象。数值(标量)可被看成1×1的矩阵,矢量(一维数组)可被看成n×1或1×n的矩阵。在MATLAB中,不需要对矩阵的维数和类型进行说明,MATLAB会根据用户所输入的内容进行配置。创建矩阵有以下3种方法。
1.直接输入创建矩阵
通过输入矩阵中每个元素的值来建立一个矩阵,只需以左方括号开始,以逗号或空格为间隔输入元素值,行与行之间用分号或单击〈Enter〉键隔开,最后以右方括号结尾即可。当矩阵中的元素个数比较少时,这种方法非常适用。另外,用 “单引号” 界定的字符或字符串可创建字符矩阵。
【 例1-6 】 创建3×3数值矩阵 A , B 和字符矩阵 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.矩阵与标量的运算
运算包括加、减、乘、除和乘方运算。矩阵与标量运算是矩阵的每个元素对该标量的运算。MATLAB用符号 “ ∧ ” 计算乘方时,按照矩阵运算规则计算,要求矩阵为方阵;用符号“. ∧ ” 计算乘方时,按照数组运算规则计算,对矩阵没有限制。
【 例1-9 】 已知矩阵 A = ,标量b=3,计算 A +b、 A *b、 A/ b和 A . ∧ b。
2.矩阵与矩阵的运算
(1)加减运算
两个矩阵的维数完全相同时,可以进行矩阵加减法运算。如果两个矩阵的维数不相等,则MATLAB将给出错误信息,提示两个矩阵的维数不相等。
(2)乘法运算
两个矩阵的维数相容时( A 的列数等于 B 的行数),可以进行 A 乘 B 的乘法运算。
(3)除法运算
矩阵的除法运算包括左除和右除两种运算。其中
左除: A \ B=A -1 B , A 为方矩阵。其中 A -1 =1 /A
右除: A/B=AB -1 , B 为方矩阵。其中 B -1 =1/ B
可见,左除和右除的运算过程以及对矩阵的要求是不一样的,其数学意义也不同。
(4)点运算
两个矩阵之间的点运算是按照数组运算规则计算,矩阵的对应元素直接运算。要求参加运算的矩阵大小必须相同。有 “.*” “./” 和 “.\” 3种运算符。
【 例1-10 】 已知矩阵 A = ,矩阵 B = ,求 A * B 、 A. * B 、 A\B 、 A/B 、 A.\B 和 A./B 的运算结果。
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的魔方矩阵,提取其对角元素和下三角矩阵,并上下翻转。
MATLAB允许在运算和函数中使用复数或复数矩阵。复数的表示借助于特殊的字符 i或j,其值在工作空间中都显示为0+1.0000i。
1.复数
复数可由以下两种方式输入:
其中,3.14为复数幅角的弧度,3为复数的模。
2.复数矩阵
复数矩阵有下列两种表示方法:
两式具有相同的结果。另外,当复数的虚部为一个确定的数值(而不是变量或矩阵)时,输入时可以省略i(或j)前面的 “*” 符号。另外,如果 i、j被定义为其他变量(例如在程序设计中常常习惯于将i和j作为循环变量),则应定义另一个新的复数单位,如
这里将i1定义成新的复数单位。
在许多工程实践中,经常会出现一些只包含几个非零元素,而其他大量的元素都为零值的矩阵,这种矩阵被称为稀疏矩阵。如果按普通的矩阵处理方法来处理这些矩阵,不但会占用许多存储空间,同时也会严重地影响运行速度。为了避免这些缺点,对于那些具有大量零元素的矩阵,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 。