2-2 VqPx}Bz

在上一節的各個範例例中,我們使用 MATLAB 的變數來儲存純量(Scalars),其實 MATLAB 中的變數還可用來儲存向量(Vectors)及矩陣(Matrix),以進行各種運算,例如:

>> s = [1 3 5 2]; % 注意 [] 的使用,及各數字間的空白間隔 >> t = 2*s+1 t = 3 7 11 5

在上例中,MATLAB 使用中括號([]),來建立一個列向量(Row Vector) [1 3 5 2 ],將其儲存在變數 s 中,再對其進行運算產生另一新的列向量 [3 7 11 5],並將其結果儲存在變數 t 內。

Hint
  • s = [1 3 5 2] 與 s = [1, 3, 5, 2] 的效果是一樣的。
  • 我們也可以使用 x = 1:n 來產生由 1 到 n 的列向量。
  • 一個長度為 n 的列向量也可以看成是大小為 1×n的矩陣。

MATLAB 亦可取出向量中的一個元素或一部份來做運算,例如:

>> t(3) = 2 % 將向量 t 的第三個元素更改為 2 t = 3 7 2 5 >> t(6) = 10 % 在向量 t 加入第六個元素,其值為 10 t = 3 7 2 5 0 10 >> t(4) = [] % 將向量 t 的第四個元素刪除,[] 代表空集合 t = 3 7 2 0 10 >> s(2)*3 + t(4) % 取出 s 的第二個元素和 t 的第四個元素來運算 ans = 9 >> t(2:4) – 1 % 取出向量 t 的第二至第四個元素來做運算 ans = 6 1 -1

用類似上述建立向量的方法,使用者也可以直接建立大小為 m×n的矩陣 (m 代表矩陣的橫列數,n 代表矩陣的直行數),但必需在每一橫列結尾加上分號(;),例如:

>> A = [1 2 3 4; 5 6 7 8; 9 10 11 12]; % 建立 3×4 的矩陣 A >> A % 顯示矩陣 A 的內容 A = 1 2 3 4 5 6 7 8 9 10 11 12

同樣地,我們可以對矩陣進行各種處理,例如:

>> A(2,3) = 5 % 將矩陣 A 第二列、第三行的元素值,改變為 5 A = 1 2 3 4 5 6 5 8 9 10 11 12 >> B = A(2,1:3) % 取出矩陣 A 的第二橫列、第一至第三直行,並儲存成矩陣 B B = 5 6 5 >> A = [A B'] % 將矩陣 B 轉置後、再以行向量併入矩陣 A A = 1 2 3 4 5 5 6 5 8 6 9 10 11 12 5 >> A(:, 2) = [] % 刪除矩陣 A 第二行(:代表所有橫列,[]代表空矩陣) A = 1 3 4 5 5 5 8 6 9 11 12 5 >> A = [A; 4 3 2 1] % 在原矩陣 A 中,加入第四列 A = 1 3 4 5 5 5 8 6 9 11 12 5 4 3 2 1 >> A([1 4], :) = [] % 刪除第一、四列(:代表所有直行,[]是空矩陣) A = 5 5 8 6 9 11 12 5

善用這幾種矩陣處理的方式,可以產生意想不到的效果,就看各位的巧思與創意。

在 MATLAB 的內部資料儲存結構中,每一個矩陣都是一個以行為主(Column-oriented)的向量(Vector),因此對於矩陣內各元素的存取,我們可用一維或二維的索引(Index)或下標(Subscript)來定址。舉例來說,在上述矩陣 A 中,若需取用位於第二列、第三行的元素,可採取二維索引的存取方式寫為 A(2, 3),或可採取一維索引的存取方式寫為 A(6),此即對矩陣 A 中的所有直行進行堆疊後取用第六個元素。

A(:) 就是將矩陣 A 每一直行堆疊起來,成為一個行向量,而這也是 MATLAB 變數的內部儲存方式。以前例而言,A(:) 將會產生一個 8×1 的二維矩陣或一內有八個元素的行向量。


MATLAB程式設計:入門篇