(translator=roro, ChineseSource=roro-20020609-5\arithmeticoperators.html, EnglishSource=c:\matlabr12\help\techdoc\ref\arithmeticoperators.html)
MATLAB Function Reference    
Arithmetic Operators + - * / \ ^ '

矩陣和陣列的運算

Syntax

Description

MATLAB 有兩種不同型態的運算。矩陣運算依線性代數的法則執行。陣列運算則是元素之間一對一的運算。句號字元 (.) 表示將執行陣列運算。然而,矩陣和陣列的加法及減法運算結果是相同的,故字元組合 .+.- 並不會使用。

+

加法或是正號。A+B 為把 AB 相加。AB 必須有相同的尺寸,除非其中之一為數值。數值可和任何尺寸的矩陣進行加法運算。

-

減法或是負號。A-B 為把 A 減去 BAB 必須有相同的尺寸,除非其中之一為數值。數值可和任何尺寸的矩陣進行減法運算。

*

矩陣乘法。C = A*B 為矩陣 AB 的線性代數乘法。更精確的說法,
AB 皆不為單一數值。A 的欄數必須等於 B 的列數。數值可和任何尺寸的矩陣相乘。

.*

陣列乘法。A.*B 為陣列 AB 之間元素對元素的乘法。AB 必須有相同的尺寸,除非其中之一為數值。

/

斜線或矩陣右除法。B/A 相當於 B*inv(A)。更精確地說,B/A = (A'\B')'。可參考 \

./

陣列右除法。A./B 產生元素為 A(i,j)/B(i,j) 的矩陣。AB 必須有相同的尺寸,除非其中之一為數值。

\

反斜線或矩陣左除法。若 A 為正方矩陣,A\B 則等同於 inv(A)*B。若 An*n 的矩陣而 B 為含有 n 個元件的行向量,或是有如此數欄的矩陣,則 X = A\B 為方程式 AX = B 經高斯消去法所得到的解(可參考 "Algorithm" 以得到更詳細的資訊)。

A 為一 m*n 的矩陣而 m ~= nB 為一含有 m 個元件的行向量,或是有如此數欄的矩陣,則 X = A\B 為等式 AX = B 的最近距離解。有效的行列,即 A 中的 k,依 QR 分解來定義(可參考 "Algorithm" 以得到詳細的資訊)。解 X 至多每一欄有 k 個非零的元件。若 k < n,則通常所得到結果不等於 pinv(A)*B,此即為最小距離的解,也就是 ||X||。

.\

陣列左除法。A.\B 產生元素為 B(i,j)/A(i,j) 的矩陣。AB 必須有相同的尺寸,除非其中之一為數值。

^

矩陣乘冪。X^pXp 次方,p 為一數值。若 p 為正整數,則乘慕則是重覆 p 次的乘法。若為負數,X 為先經過反轉。若 p 為其他值,則計算將會涉入特徵值(eigenvalues)及特徵向量(eigenvectors),也就是若 [V,D] = eig(X),則 X^p = V*D.^p/V

x 為一數值而 P 為一矩陣,x^Px 利用特徵值及特徵向量提升至矩陣乘冪 PX^P,其中 X P 若皆為矩陣,則會有錯誤。

.^

陣列的乘冪。A.^B 產生元素為 A(i,j) B(i,j) 次方之矩陣。AB 必須有相同的尺寸,除非其中之一為數值。

'

矩陣轉置。A' 為線性代數的轉置。對於複數矩陣,則為複數共軛轉置。

.'

陣列轉置。A.'A 的陣列轉置。對於複數矩陣,則不會涉入共軛轉置。

Remarks

運算元和 M 檔案有相同的函式,列於下表:

二元加法
A+B
plus(A,B)
一元正號
+A
uplus(A)
二元減法
A-B
minus(A,B)
一元負號
-A
uminus(A)
矩陣乘法
A*B
mtimes(A,B)
陣列乘法
A.*B
times(A,B)
矩陣右除法
A/B
mrdivide(A,B)
陣列右除法
A./B
rdivide(A,B)
矩陣左除法
A\B
mldivide(A,B)
陣列左除法
A.\B
ldivide(A,B)
矩陣乘冪
A^B
mpower(A,B)
陣列乘冪
A.^B
power(A,B)
複數轉置 A'
ctranspose(A)
矩陣轉置
A.'
transpose(A)

Examples

以下有兩個向量,而不同的矩陣和陣列運算會導致不同的結果,以 format rat 顯示。

Matrix Operations
Array Operations
x
1
2
3
y
4
5
6
x'
1 2 3
y'
4 5 6
x+y
5
7
9
x-y
-3
-3
-3
x + 2
3
4
5
x-2
-1
0
1
x * y
錯誤
x.*y
4
10
18
x'*y
32
x'.*y
錯誤
x*y'
4 5 6
8 10 12
12 15 18
x.*y'
錯誤
x*2
2
4
6
x.*2
2
4
6
x\y
16/7
x.\y
4
5/2
2
2\x
1/2
1
3/2
2./x
2
1
2/3
x/y
0 0 1/6
0 0 1/3
0 0 1/2
x./y
1/4
2/5
1/2
x/2
1/2
1
3/2
x./2
1/2
1
3/2
x^y
錯誤
x.^y
1
32
729
x^2
錯誤
x.^2
1
4
9
2^x
錯誤
2.^x
2
4
8
(x+i*y)'
1 - 4i 2 - 5i 3 - 6i
(x+i*y).'
1 + 4i 2 + 5i 3 + 6i

Algorithm

用來解大量線性方程式 X = A\BX = B/A 的演算法是根據係數矩陣 A 的結構。

MATLAB 使用 LAPACK 程序計算不同的全矩陣分解:

矩陣
實數
複數
全矩陣,對稱 (Hermitian) 正向定義  
DLANGE, DPOTRF, DPOTRS, DPOCON
ZLANGE, ZPOTRF, ZPOTRS ZPOCON
全矩陣,一般的形式 DLANGE, DGESV, DGECON
ZLANGE, ZGESV, ZGECON
全為非正方 DGEQPF, DORMQR, DTRTRS
ZGEQPF, ZORMQR, ZTRTRS
其他的狀況(三角及 Hessenberg)MATLAB 並不使用 LAPACK。

Diagnostics

對於矩陣除法,若一正方 A 為單數:

對於陣列元素除法,若除數的元素有零:

矩陣除法回傳一矩陣其每個元素都設為 Inf;元素除法產生 NaNs 或 Infs。

若反轉找得到,但並不確實:

對於矩陣除法,若非正方矩陣 A 為行列缺陷(rank deficient):

See Also

det, inv, lu, orth, permute, ipermute, qr, rref

References

[1]  Anderson, E., Z. Bai, C. Bischof, S. Blackford, J. Demmel, J. Dongarra, J. Du Croz, A. Greenbaum, S. Hammarling, A. McKenney, and D. Sorensen, LAPACK User's Guide, Third Edition, SIAM, Philadelphia, 1999.


 Reference Relational Operators < > <= >= == ~=