森之张卫东 发表于 2015-9-2 07:53

数组运算和矩阵运算

数组运算和矩阵运算


MATLAB在数组运算中提供了两种不同类型的运算,一种是数组运算(array operations),一种是矩阵运算(matrix).数组运算是

一种用于元素对元素的运算.也就是说,这个运算是针对两数组相对应的元素使用的. 注意两数组的行与列必须相同.否则,MATLAB
将产生错误.


数组运算可以用于数组与标量的运算.当一个数组和一个标量进行运算时,标量将会和数组中的每一元素进行运算.则相对地,
矩阵运算则遵守线性代数的一般规则,像矩阵的乘法.在线性代数中,c=a×b的定义如下:
                                          表2.5 两标量间的数学运算符

        运算符      代数形式   MATLAB形式  
      加号    A+B  A+B
    减号    A­B  A­B
    乘号    A×B  A*B
    除号    file:///C:/Users/lx/AppData/Local/Temp/msohtmlclip1/01/clip_image012.gif  A/B
    指数    file:///C:/Users/lx/AppData/Local/Temp/msohtmlclip1/01/clip_image014.gif  A^B



注意,在矩阵相乘中,a阵的列数必须等于b阵的行数。
MATLAB用一个特殊的符号来区分矩阵运算和数组运算。在需要区分两者不同的时侯,把点置于符号前来指示这是一个数组运算(例如,.*)。表2。6给出的是一些常见的数组和矩阵运算。
                                               表2.6常见的数组和矩阵运算

    运算    MATLAB形式  注释
    数组加法    A+B  数组加法和矩阵加法相同
    数组减法    A­B  数组减法和矩阵减法相同
    数组乘法    A.*B  A和B的元素逐个对应相乘.两数组之间必须有相同的形,或其中一个是标量.
    矩阵乘法    A*B  A和B的矩阵乘法.A的列数必须和B的行数相同.
    数组右除法    A./B  A和B的元素逐个对应相除:  A(i,j)/B(i,j)两数组之间必须有相同的形,或其中一个是标量.
    数组左除法    A.\B  A和B的元素逐个对应相除:  B(i,j)/A(i,j)两数组之间必须有相同的形,或其中一个是标量.
    矩阵右除法    A/B  矩阵除法,等价于A*inv(B), inv(B)是B的逆阵
    矩阵左除法    A\B  矩阵除法,等价于inv(B)*A, inv(A)是A的逆阵
    数组指数运算    A.^B  AB中的元素逐个进行如下运算A(i,j)^B(i,j),  A(i,j)/B(i,j)两数组之间必须有相同的形,或其中一个是标量.


初学者往往混淆数组运算和矩阵运算.在一些情况下,两者相互替换会导致非法操作, MATLAB将会报告产生了错误。在另一些情况下,两种运算都是合法的,那么这时MATLAB进行错误的运算,并产生错误的结果。当我们进行方阵运算时,极易产生这样的错误。两个方阵具有相同的大小,两者之间的数组运算和矩阵运算都是合法的,但产生的结果完全不同。在这种情况下,你要万分的小心。

常见编程错误
在你的MATLAB代码中,仔细区分数组运算和矩阵运算。数组乘法和矩阵乘法极易混淆。


因为左除运算A\B等价于inv(A)*B,所以左除运算是解线性方程的好方法。





森之张卫东 发表于 2015-9-2 07:55

哎,对不住大家,又是排版问题,附上表2-5!
排版时,Mathtype的公式不好处理!
页: [1]
查看完整版本: 数组运算和矩阵运算