使用多維陣列的長度
MATLAB 編碼器常見的錯誤是將 length
函式用於矩陣(與向量相反,它是預期的)。length
函式,如其文件中所述 ,“ 返回輸入的最大陣列維度的長度 ”。
對於向量,length
的返回值有兩個不同的含義:
- 向量中元素的總數。
- 向量的最大維度。
與向量不同,對於多於一個非單一(即,其大小大於 1
)維度的陣列,上述值將不相等。這就是為什麼將 length
用於矩陣是不明確的。相反,即使使用向量,也鼓勵使用以下函式之一,以使程式碼的意圖非常清晰:
size(A)
- 返回一個行向量,其元素包含A
對應維度的元素數量。numel(A)
- 返回A
中的元素數量。相當於prod(size(A))
。ndims(A)
- 返回陣列A
中的維數。相當於numel(size(A))
。
在編寫面向未來的向量化庫函式時,這一點尤其重要,它們的輸入事先不知道,並且可以具有各種大小和形狀。