許多用於向量和矩陣的數學運算,例如 sum、max、min、mean 等,也都可以用在多維陣列,但是要特別注意,在使用這些指令時,我們必須指定這些指令的操作是在哪一個維度,例如:
在上述範例中,矩陣 Z 的大小是 3×4×2,sum(Z, 1) 是根據第一個維度來進行相加,因此第一個維度值就會被壓成是 1,因此 size(S) 所傳回的值是 [1, 4, 2],代表矩陣 S 的大小是 1×4×2。此外,sum(Z) 的預設相加維度即是 1,因此 sum(Z) 和 sum(Z, 1) 所得到的結果是一樣的。
若要對第二個維度進行相加,可見下列範例。
在上述範例中,sum(Z, 2)是對第二個維度進行相加運算,因此所傳回的矩陣 S 的維度是 3×1×2。(在本書的範例程式中,sum03.m 是對 Z 的第三個維度進行相加運算,請讀者自己試試看。)
在上述範例中,我們可以想像 S = sum(Z, 1) 是先作用在 Z 的每一頁,然後再將結果堆疊起來,成為一個三維陣列 S。同樣的想法,也可以應用在 S = sum(Z, 2)。
要注意的是,如果所要相加的維度只有單一維度,那麼 sum 指令會對下一個維度進行相加的動作,因此(承襲上述範例)sum(sum(Z)) 將會得到三維陣列 Z 的每一頁的總和,請見下列範例。
同理,若要得到陣列 Z 的所有元素總和,可用 sum(sum(sum(Z))) 或是 sum(Z(:)),在此不再贅述。
與 sum 類似的指令還有 max、min、mean、median、mode、std、diff、sort 等,讀者可以參考本書第九章「矩陣的處理與運算」的第三小節「矩陣的數學運算」。
MATLAB程式設計:入門篇