数组运算和矩阵运算
MATLAB在数组运算中提供了两种不同类型的运算,一种是数组运算(array operations),一种是矩阵运算(matrix).数组运算是
一种用于元素对元素的运算.也就是说,这个运算是针对两数组相对应的元素使用的. 注意两数组的行与列必须相同.否则,MATLAB
将产生错误.
数组运算可以用于数组与标量的运算.当一个数组和一个标量进行运算时,标量将会和数组中的每一元素进行运算.则相对地,
矩阵运算则遵守线性代数的一般规则,像矩阵的乘法.在线性代数中,c=a×b的定义如下:
表2.5 两标量间的数学运算符
运算符
加号
减号
乘号
除号 file:///C:/Users/lx/AppData/Local/Temp/msohtmlclip1/01/clip_image012.gif
指数 file:///C:/Users/lx/AppData/Local/Temp/msohtmlclip1/01/clip_image014.gif
注意,在矩阵相乘中,a阵的列数必须等于b阵的行数。
MATLAB用一个特殊的符号来区分矩阵运算和数组运算。在需要区分两者不同的时侯,把点置于符号前来指示这是一个数组运算(例如,.*)。表2。6给出的是一些常见的数组和矩阵运算。
表2.6常见的数组和矩阵运算
运算 | | | 数组加法 | | | 数组减法 | | | 数组乘法 | | A和B的元素逐个对应相乘.两数组之间必须有相同的形,或其中一个是标量. | 矩阵乘法 | | | 数组右除法 | | A和B的元素逐个对应相除: A(i,j)/B(i,j)两数组之间必须有相同的形,或其中一个是标量. | 数组左除法 | | A和B的元素逐个对应相除: B(i,j)/A(i,j)两数组之间必须有相同的形,或其中一个是标量. | 矩阵右除法 | | 矩阵除法,等价于A*inv(B), inv(B)是B的逆阵 | 矩阵左除法 | | 矩阵除法,等价于inv(B)*A, inv(A)是A的逆阵 | 数组指数运算 | | AB中的元素逐个进行如下运算A(i,j)^B(i,j), A(i,j)/B(i,j)两数组之间必须有相同的形,或其中一个是标量. |
初学者往往混淆数组运算和矩阵运算.在一些情况下,两者相互替换会导致非法操作, MATLAB将会报告产生了错误。在另一些情况下,两种运算都是合法的,那么这时MATLAB进行错误的运算,并产生错误的结果。当我们进行方阵运算时,极易产生这样的错误。两个方阵具有相同的大小,两者之间的数组运算和矩阵运算都是合法的,但产生的结果完全不同。在这种情况下,你要万分的小心。
常见编程错误
在你的MATLAB代码中,仔细区分数组运算和矩阵运算。数组乘法和矩阵乘法极易混淆。
因为左除运算A\B等价于inv(A)*B,所以左除运算是解线性方程的好方法。
|