MATLAB矩陣運算


1. 矩陣的加減乘除和(共軛)轉置

(1) 矩陣的加法和減法

  如果矩陣AB有相同的維度(行數和列數都相等),則可以定義它們的和A+B以及它們的差A-B,得到一個與AB同維度的矩陣C,其中Cij=Aij+BijAij-Bij.

      另外Matlab還支持任意一個矩陣A與一個標量s相加,結果為矩陣的每一個元素加減標量,得到一個與A同維度的新的矩陣,即A+s的各個元素為Aij+s.

(2) 矩陣的乘法

  如果矩陣A的列數等於矩陣B的行數,則可以將AB相乘,命令為A*B,得到一個新的矩陣CC的行數等於A的行數,列數等於B的列數. 由於矩陣的乘法不滿足交換律,所以一般A*B不等於B*A.

(3) 矩陣的張量積(tensor product)

  矩陣AB的張量積AB可以方便地用kron函數計算,即使用命令kron(A,B), 例如

(4) 矩陣的除法

  在MatLab中,有兩個矩陣除法符號,左除\和右除/. 如果A是一個非奇異方陣(nonsingular square, 即滿秩方陣),B的行數與A的行數相等,那么A\B=A-1B. 如果C的列數與A的列數相等,那么C/A=CA-1.

  從另一個角度來看,X=A\B是矩陣方程AX=B的解,X=C/A是矩陣方程XA=C的解. 如果b是一個行數與A的行數相等的列向量,則向量x=A\b是線性方程組 Ax=b的解. 且在矩陣方程AX=B中,A可以是一個m×n的矩陣,如果m=n則有唯一解;如果m<n則有多個解,Matlab會返回一個基礎解;如果m>n則會返回一個最小方陣解.

(5) 矩陣的轉置和共軛轉置

  在Matlab中,矩陣的共軛轉置用撇號表示,如果不需要對元素進行共軛運算,僅僅只對矩陣進行轉置,則在撇號之前輸入一個點號,即 .’ . 對於實數矩陣AA’A.’是相同的.

2. 矩陣元素操作運算

  矩陣的運算既可以是如前所述的正常的整體運算,也可以是矩陣對應的元素依次進行標量運算,也叫數組運算,即把矩陣看做是二維數組. 對矩陣進行數組運算后得到的結果是一個與參與運算的矩陣維度相同的新矩陣,.這種元素間的算術運算的前提是參與運算的兩個矩陣的維數要相同.

      對於加法和減法,元素操作運算和矩陣運算沒有差別,而對於乘、除和冪運算符,相應的數組運算符是在一般的算術運算符前面加上一個點號,如

+       -       .*       ./       .\       .^

其中,A./B 是指A中的元素除以B中相應的元素,即A./B 的第i行第j列的元素(A./B)ij=Aij/Bij,而(A.\B)ij=Bij\Aij. 這些元素運算符的使用例子如下所示:

  

  

  在Matlab中預定義的數學標准函數,如sin(x), abs(x)等都是基於對矩陣元素的運算. 如果函數f(x)是這樣的一個函數,A是一個m×n的矩陣,其元素是aij ,那么 f(A)也是一個m×n的矩陣,其第i行第j列的元素為f(aij),例如

  

其中pi是Matlab的預定義變量,值為π,i也是預定義變量,表示復數的單位.

3. 常用的矩陣函數

  矩陣函數是指參數為矩陣的函數,函數結果可能是一個標量值也可能是一個函數或者向量. Matlab中常用的矩陣函數包括:

  (1) rank(A): 求矩陣A的秩,即A中線性無關的行數或者線性無關的列數.

  

  (2) det(A): 求矩陣A的行列式值.

  

  (3) inv(A): 如果A是一個非奇異(nonsingular)矩陣,則inv(A)返回A的逆矩陣. 另外還可以用左除A\eye(n)或右除eye(n)/A來計算A的逆,且在Matlab中用左除或右除來計算逆所花的計算時間比用inv函數要少,也比inv具有更好的容錯性(error-detection properties).

  (4) dot(x,y): 求同維度的向量x和y的內積/點積. 若AB是兩個具有相同維度的矩陣,則dot(A,B)是計算AB對應列的內積,結果是一個行向量,這個行向量的列數等於AB的列數. 例如

  

  (5) cross(x,y): 計算同維度的向量xy的叉積,結果是一個向量,其方向由右手定則決定,長度等於|x|*|y|sin<x,y>. 若AB是兩個具有相同維度的矩陣,則cross(A,B)是計算AB對應列的叉積,結果是一個維度與AB相等的矩陣.

  (6) kron(A,B): 得到矩陣AB的張量積.

  (7) isequal(A,B): 如果矩陣AB是相同的,即具有相同的維數和相同的內容,則返回1.

  (8) isreal(A): 判斷A是否是一個實矩陣,如果是則返回1,否則返回0.

  (9) trace(A): 計算方陣A的跡,即對角線元素之和.

  (10) eig(A): 計算方陣A的特征值,結果是一個列向量,向量中元素的個數等於特征值的個數,即A的維度(A的行數或列數).

  (11) [U,D]=eig(A): 計算方陣A的特征值和特征向量,得到兩個方陣UD,其中D的對角線元素為A的特征值,U的列向量為A的特征向量(可能是未normalize的結果),例如

  

  (12) length(V): 求向量V的長度,即V的元素數量.

  (14) size(A): 若A是m行n列的矩陣,則返回行向量[m,n].


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM