A common mistake MATLAB coders have, is using the `length`

function for matrices (as opposed to **vectors**, for which it is intended). The `length`

function, as mentioned in its documentation, "*returns the length of the largest array dimension*" of the input.

For vectors, the return value of `length`

has two different meanings:

- The total number of elements in the vector.
- The largest dimension of the vector.

Unlike in vectors, the above values would not be equal for arrays of more than one non-singleton (i.e. whose size is larger than `1`

) dimension. This is why using `length`

for matrices is ambiguous. Instead, using one of the following functions is encouraged, even when working with vectors, to make the intention of the code perfectly clear:

`size(A)`

- returns a row vector whose elements contain the amount of elements along the corresponding dimension of`A`

.`numel(A)`

- returns the number of elements in`A`

. Equivalent to`prod(size(A))`

.`ndims(A)`

- returns the number of dimensions in the array`A`

. Equivalent to`numel(size(A))`

.

This is especially important when writing "future-proof", vectorized library functions, whose inputs are not known in advance, and can have various sizes and shapes.

This modified text is an extract of the original Stack Overflow Documentation created by following contributors and released under CC BY-SA 3.0

This website is not affiliated with Stack Overflow