我們用 Word 或是 Excel 這些文書處理軟體工作的時候, 一般習慣把資料做下列樣子的編排:
No. | Height | Weight | Age |
1 | 170 | 80 | 30 |
2 | 175 | 70 | 35 |
表示有2筆資料, 而每一筆的元素有3個.
我們用 Octave 儲存資料的時候, 令 T 等於上述這個 2 x 3 的表格,
使用 T(1, :) 可以取出第一行的資料 (Row = 1, Colume = 1~3)
T(1, :) == T(1, 1:3) => [170, 80, 30]
但是, 使用T(1:3) 的話會取出甚麼?
T(1:3) => [170, 175, 80]

在Octave裡面, 預設的處理方式都是以向量 (Vector) 的形式來呈現,
所以用 sum 來加總上面的 T 表格時, 你會得到 [345 150 65]
=> 對每一個 Column 做 Summation
(從資料的形式來看, 同屬一列 Column 的單位也都會是相同的, 所以這個操作其實蠻合理的)
所以在取一個陣列的值的時候, 盡量避免直接用 index 的方式來拿取,
還是乖乖地使用陣列的表示法吧!
Example. 對表格T進行正規化:
取得每一個 Column 的 mean:
meanT = sum(T) ./ size(T,1) ==> mean(T)
取得每一個 Column 的 variance
varT = sum((T - meanT).^2) ==> var(T)
取得每一個 variance 的平方根
sqrtT = varT .^ 0.5 ==> sqrt(T)
進行正規化:
nT = (T - meanT) ./ sqrtT
octave理解矩陣的方式跟我們一般認知的方式真的大不同~
回覆刪除