矩陣的加減與一般純量(Scalar)的加減類似,唯一的要求是:相加或相減的矩陣必需具有相同的維度。若維度不一致,則 MATLAB 會產生錯誤訊息,例如:
若要進行矩陣與純量的加減乘除,一般的作法是直接將純量展開並應用到矩陣的每一個元素,範例如下:
若欲進行矩陣相乘,必需確認第一個矩陣的直行數目( Column Dimension) 必需等於第二個矩陣的橫列數目(Row Dimension),否則無法進行矩陣相乘,MATLAB 會產生錯誤訊息。以下是一個矩陣相乘的簡單範例:
矩陣的除法,常藉由反矩陣或解線性方程式來達成,可參見本書姊妹作「MATLAB程式設計:進階篇」的第六章「線性代數」第一節及第四節。
矩陣的次方運算,可由「^」來達成,但矩陣必需是方陣,其次方運算才有意義,例如:
若在「*」,「/」及「^」之前加上一個句點,MATLAB 將會執行矩陣內「元素對元素」(Element-by-element) 的運算,例如:
對於一個複數矩陣 z,其「共軛轉置」矩陣(Conjugate Transpose) 可表示成矩陣 z',例如:
若只想得到任何矩陣 z 的轉置(Transpose),則可表示成矩陣 z.',例如:
若 z 為實數,則 z' 和 z.' 的結果是一樣的。(一般常犯的錯誤,會忘了矩陣 z 可能是複數,因此將 z’ 誤認為是單純的矩陣轉置。)
一個向量 a 的 Lp-norm 可以定義為 $$ \|a\|_p = \left(\sum_i |a_i|^p \right)^{1/p} $$
當 p=2 時,此即為向量 a 的長度,或稱歐氏長度(Euclidean Length)。欲求一向量的 Lp-norm,可使用 norm 指令,其使用語法如下:
norm(x, p) 範例如下
一個矩陣 A 的 p-norm 可以定義如下: $$ \|A\|_p = max_x \frac{\|Ax\|_p}{\|x\|_p} $$
MATLAB 的 norm 指令亦可用於計算矩陣的 p-norm,例如:
MATLAB 還有相當完整的數學函數及三角函數,都可以應用於向量及矩陣。以下將數學函數列表整理如下:
函數 說明 abs(x) 純量的絕對值或向量的長度 angle(z) 複數 z 的相角(Phase Angle) sqrt(x) 開平方 real(z) 複數 z 的實部 imag(z) 複數 z 的虛部 conj(z) 複數 z 的共軛複數 round(x) 四捨五入至最近整數 fix(x) 無論正負,捨去小數至最近整數 floor(x) 地板函數,即捨去正小數至最近整數 ceil(x) 天花板函數,即加入正小數至最近整數 rat(x) 將實數 x 化為分數表示 rats(x) 將實數 x 化為多項分數展開 sign(x) 符號函數(Signum function):$sign(x)=\left\{\begin{matrix}-1, x<0\\0, x=0\\1, x>0\end{matrix}\right.$ rem(x,y) 求 x 除以y的餘數 gcd(x,y) 整數 x 和 y 的最大公因數 lcm(x,y) 整數 x 和 y 的最小公倍數 exp(x) 自然指數 pow2(x) 2 的指數 log(x) 以 e 為底的對數,即自然對數 log2(x) 以 2 為底的對數 log10(x) 以 10 為底的對數 常用的三角函數也列表整理如下:
函數 說明 sin(x) 正弦函數 cos(x) 餘弦函數 tan(x) 正切函數 asin(x) 反正弦函數 acos(x) 反餘弦函數 atan(x) 反正切函數 atan2(x,y) 四象限的反正切函數 sinh(x) 超越正弦函數 cosh(x) 超越餘弦函數 tanh(x) 超越正切函數 asinh(x) 反超越正弦函數 acosh(x) 反超越餘弦函數 atanh(x) 反超越正切函數 此外,MATLAB 還有一些函數是針對向量元素的統計量而設計,例如 min(求向量的極小值)、mean(求向量的平均值)等,列表整理如下:
函數 說明 min(x) 向量 x 的元素的最小值 max(x) 向量 x 的元素的最大值 mean(x) 向量 x 的元素的平均值 median(x) 向量 x 的元素的中位數 std(x) 向量 x 的元素的標準差 diff(x) 向量 x 的相鄰元素的差 sort(x) 對向量 x 的元素進行排序(Sorting) length(x) 向量 x 的元素個數 norm(x) 向量 x 的歐氏(Euclidean)長度 sum(x) 向量 x 的元素總和 prod(x) 向量 x 的元素總乘積 cumsum(x) 向量 x 的累計元素總和 cumprod(x) 向量 x 的累計元素總乘積 dot(x, y) 向量 x 和 y 的內積 cross(x, y) 向量 x 和 y 的外積 例如,sort 指令可對向量元素進行排序(Sorting):
其中 sorted 是排序後的向量,index 則是每個排序後的元素在原向量 x 的位置,換句話說,x(index) 即等於 sorted 向量。另一個有趣的問題:如何使用 sort 指令加上前例中的 sorted 及 index 來求得原先的向量 x?(此題就留給各位讀者去練功吧!)
上述列表的函數大部份也適用於矩陣,他們只是將矩陣視為行向量的集合,來逐一對行向量進行運算。例如:欲找出一矩陣最大元素的位置,可輸入如下:
其中 colMax 代表每一直行的最大值,colMaxIndex 則是每一直行出現最大值的位置。若要求得 x 的最大元素的位置,可輸入如下:
由此可以看出,矩陣 x 的最大元素即是 maxValue,而其發生位置為 [colMaxIndex(maxIndex), maxIndex] = [5 , 3]。
MATLAB程式設計:入門篇