数组和矩阵的关系
摘要:数组和矩阵式MATLAB中基本的数据存在形式。
一方面,数组是数据结构中的概念,有利于计算机实现层次上的计算;另一方面,矩阵是线性代数中的概念,有利于数学层次上的计算。
关键词:数组,矩阵,MATLAB
我们可以确定数组与矩阵之间的关系:(1)一维数组可以表示行向量或列向量;(2)二维数组可以表示为矩阵。
所以,矩阵运算可以看作是基于数组实现的高级运算。
所谓数组,就是相同数据类型的元素按一定顺序排列的集合,即把有限个类型相同的变量用一个名字命名,用编号区分每个元素的变量的集合,这个名字称为数组名,编号称为下标。
组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。
我们必须清楚,数组是用于程序设计的数据结构中的概念,并不是数学上的概念,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来的一种形式。
为了实现某种数学运算,可以使用数组来描述某种类型的变量。
简而言之,数组的运算是对所有元素进行相同运算。
一,数组与矩阵的创建
直接输入法是创建数组最简单的方法。
而且此方法可以自由指定元素的数值。
采用基本规则是:(1)所有元素必须用方括号“[ ]”括起来;(2)元素之间必须用逗号“,”或空格“”分割;(3)每个元素可以用MATLAB表达式表示,既可以是实数,也可以是复数。
通常,很多数组依赖数据最大值和最小值来产生数组的元素。
区间限定法可以代替直接输入法中由用户计算元算的过程,依据指定数据的最大值last和最小值first 自动生成数组的每个元素。
与一维数组相比,二维数组增加了一个维度,所以创建方法有所不同。
直接输入法的使用增加了一个新规则:在方括号“[ ]”内的行与行之间必须用分号“;”分隔。
区间限定法也可以直接用于二维数组的创建。
与数组的创建相似,矩阵的创建可以采用直接输入法。
矩阵创建的基本规则是(1)所有元素必须用方括号“[ ]”括起来;(2)在[ ]内矩阵的行与行之间必须用分号“;”分隔;(3)元素之间必须用逗号“,”分隔;(4)每个元素可以用MATLAB表达式表示,既可以是实数,也可以是复数。
二,数组与矩阵的访问
对于数组的访问,需要实现对数组元素的浏览和修改。
方法一,可以通过界面的可视化操作直接编辑数组的某个元素,即通过在工作空间中找到定义数组变量名,用鼠标双击变量名后,进入“Array Editor”操作界面,用鼠标直接单击或者用键盘方向键找到所要修改的元素进行修改即可,
方法二,对于数组的访问,可以用MATLAB命令来访问数组的某个元素,这对于应用MATLAB进行高级程序设计是非常必要的。
为了访问一维数组元素,采用“数组名(序号)”方式来读取数组元素,采用“数组名(序号) = 数据”方式来修改数组元素。
为了访问二维数组元素,采用“数组名(序号1,序号2)”方式来读取数组元素,采用“数组名(序号1,序号2)= 数据”方式来修改数组元素。
可以利用与数组访问相同的方法实现对矩阵的访问,或者通过MATLAB工作空间直接编辑矩阵的某个元素,还可以采用“矩阵名(序号)”的方式访问矩阵元素。
三,数组与矩阵的运算
①数组与矩阵的加减
数组加运算符为“+”,减运算符为“—”,具体运算形式为:a+b或者a—b
运算法则为:数组加减运算是两个数组的对应元素的相加减,并且要求两个数组每个维度必须拥有相同的元素个数。
矩阵加运算符为“+”,减运算符为“—”,具体运算形式如下:a+b或者a-b
运算法则为:相加减的两矩阵必须拥有相同的行和列;两矩阵对应元素进行相加减;允许参与运算的两矩阵之一为标量,且标量与矩阵的所有元素进行相加减操作。
矩阵的加减运算结果与数组加减运算结果相同。
②数组与矩阵的乘法
数组乘运算符为“*”,与一般的乘法运算符相比,它增加了一个标点符号“.”。
由于数组运算是元素对元素的算术运算,运算符中的“.”可以理解为元素,所以,通常将数组称为“点乘”。
具体运算形式如下:
a.*b
运算法则为:数组乘法运算是两个数组的对应元素相乘,要求两个数组每个维度必须拥有相同的元素个数。
应注意“a.*b”与“a*b”的运算结果并不相同。
矩阵乘运算符为“*”,与一般的乘法运算符相同。
具体运算形式如下:
a * b
运算为:矩阵乘法运算是两个矩阵对应行列的元素相乘;a矩阵的列数必须等于b 矩阵的行数;标量可与任何矩阵相乘。
③数组与矩阵的除法,
与一般的除法运算有所不同,数组除运算分别为右除和左除,运算符分别表示为“./”和“.\”。
与数组乘法相类似,数组除法运算符也增加了一个点符号,所以,通常将数组除运算符称为“点除”。
具体运算形式如下:
“a./b”表示a的元素被b的对应元素除;
“a.\b”表示b的元素被a的对应元素除。
在线性代数中并不存在矩阵的除法运算。
矩阵除法是MATLAB在矩阵求逆的基础上扩展而来的。
与一般的除法运算有所不同,矩阵除运算符分为左除和右除,运算符号分别表示为“\”和“/”。
根据线性代数的知识,可以知道矩阵A可逆的条件为:(1)A是方阵;(2)A的各列线性无关;(3)行列式|A|不等于0。
MATLAB的矩阵除法与逆矩阵紧密相关,如果数学上逆矩阵并不存在,那么MATLAB的矩阵除法会得到一个什么结果呢?事实上,MATLAB的计算功能之强大就在于扩展了数学上的概念,提供一个可以参考的计算结果。
当数学上的逆矩阵并不存在时,MATLAB会提供一个伪逆,即用函数pinv来参与运算。
与数组运算除法所不同,即使除数和被除数的矩阵相同,矩阵左除和右除的计算结果也不一定相同。
一般情况下,a\b不等于b\a。
④数组与矩阵的乘方
数组乘方运算符为“^”,表示数组元素对元素的幂运算。
通常将数组乘方运算称为“点幂”。
具体运算形式如下:
a.^b
运算法则为:数组乘方运算是两个数组的对应元素进行幂运算,要求两个数组每个维度必须拥有相同的元素个数。
矩阵乘方运算符号为“^”,a的p次幂具体运算形式如下:
其中,a和p可以是矩阵或者标量,但不能同时是矩阵。
由以上的运算可知,MATLAB可以进行幂指数为浮点数的运算,计算功能十分强大,而这些复杂计算是如何进行呢?
矩阵乘方的等价运算说明如下。
(1)当a为方阵,p为标量时,分两种情况:
①当p是大于1的正整数,则a的p次幂即为a自乘p次;当p是负整数时,则a的p次幂为a的逆自乘p次。
②当p是不为整数的标量时,乘方的等价运算为a^p=v*D.^p/v。
其中,D为矩阵a的特征值矩阵,v为对应的特征矢量阵。
可以使用eig函数求出矩阵a的D和v,即[v,D]=eig(a)。
(2)当p为方阵、a为标量时,a^p=v*a^D/v,其中[v,D]=eig(p)。
四,小结
总的来说,数组中的元素可以是字符等,而矩阵中的只能是数这是二者最直观的区别。
因为矩阵是一个数学概念(线性代数里的),数组是个计算机上的概念。
因为计算机上(准确的说是信息科学中)常用到线性代数的知识,就引用了矩阵的概念。
一维数组相当于向量,二维数组相当于矩阵.所以矩阵是数组的子集数组运算是指数组对应元素之间的运算,也称点运算.矩阵的乘法、乘方和除法有特殊的数学含义,并不是数组对应元素的运算,所以数组乘法、乘方和除法的运算符前特别加了一个点。
矩阵是一个二维数组,所以矩阵的加、减、数乘等运算与数组运算是一致的。
但有两点要注意:(1)对于乘法、乘方和除法等三种运算,矩阵运算与数组运算的运算符及含义都不同:矩阵运算按线性变换定义,使用通常符号;数组运算按对应元素运算定义,使用点运算符;
(2)数与矩阵加减、矩阵除法在数学是没有意义的,在MATLAB中为简便起见,定义了这两类运算。
参考文献:
[1]尚涛.MATLAB基础及其应用教程[M].北京:电子工业出版社,2014:33-45.。