使用多維陣列的長度

MATLAB 編碼器常見的錯誤是將 length 函式用於矩陣(與向量相反,它是預期的)。length 函式,如其文件中所述 ,“ 返回輸入的最大陣列維度的長度 ”。

對於向量,length 的返回值有兩個不同的含義:

  1. 向量中元素的總數。
  2. 向量的最大維度。

與向量不同,對於多於一個非單一(即,其大小大於 1)維度的陣列,上述值將不相等。這就是為什麼將 length 用於矩陣是不明確的。相反,即使使用向量,也鼓勵使用以下函式之一,以使程式碼的意圖非常清晰:

  1. size(A) - 返回一個行向量,其元素包含 A 對應維度的元素數量。
  2. numel(A) - 返回 A的元素數量。相當於 prod(size(A))
  3. ndims(A) - 返回陣列 A 中的維數。相當於 numel(size(A))

在編寫面向未來向量化庫函式時,這一點尤其重要,它們的輸入事先不知道,並且可以具有各種大小和形狀。