其實向量 (vector) 是一種特殊的矩陣:亦即 n 乘 1 的矩陣。 向量都是「直」的,又特別稱為行向量 (column vector)。 轉置的向量,也就是「橫」的,稱為序列 (array) 或列向量 (row vector), 它們是 1 乘 n 的矩陣。 以後除非特別需要,我們說向量的時候也都包含序列。
例如令
v = [-2 -1 0 1 2]'則 v 是一個五維向量。 用在矩陣上的函式,通常也都可以用在向量上,例如
size(v)得到 5 1。而 rank(v) 也得到正確的答案: 1; 凡是非零的向量本身都是線性無關,所以階數是 1。
但是 det(v) 不能做,因為 v 不是方陣。 奇怪的是 trace(v) 也不能做,先不要管它吧。
Matlab 還是有針對向量的專門函式,這一節介紹關於線性代數的幾個函式, 下一節介紹關於描述統計的幾個函式。
首先,向量的歐幾里得長度 (Euclidean norm) 是其元素的絕對值平方和開根號:
norm(v)得到答案 3.1623,也就是
sqrt( abs(v(1))^2 + abs(v(2))^2 + abs(v(3))^2 + abs(v(4))^2 + abs(v(5))^2 )在上述例子,也就是 sqrt(10) 的意思。 讀者或許認為,既然已經平方,幹麼還要先做絕對值? 那是為了顧慮 v 的元素可能有複數。 如果 c 是個複數,那麼 c^2 和 abs(c)^2 就不一樣了。
如果已經知道 v 是一個向量,那麼可以用
length(v)來計算它的維度。 非常注意:length 是指向量的維度,不是長度; 長度要用 norm(v) 來計算。
事實上,length( ) 是取得 size( ) 回應的兩個維度當中比較大的那一個數。 所以如果 A 是一個 3 乘 4 的矩陣,則 length(A) 將會是 4。
最後,我們學習一個做內積 (inner product, 又稱為 dot product) 的指令
dot(v,v)不管 v 和 w 是直還是橫,只要它們是維度相等的兩個向量, dot(v,w) 就能做計算。而如果 v 和 w 都是行向量,則
習題