Я знаю, что length(x)
возвращает max(size(x))
, а numel(x)
возвращает общее количество элементов x, но лучше для массива 1 на n? Это имеет значение или они взаимозаменяемы в этом случае?
EDIT: Только для пинок:
Похоже, что они одинаковы по производительности, пока вы не достигнете 100k элементов.
В этом случае они возвращают то же самое, и нет никакой разницы. С точки зрения производительности, это зависит от внутренней работы массивов в MATLAB. Например. если есть metainformations о том, сколько элементов в массиве (независимо от формы), то числовое значение выполняется как можно быстрее, а max (size (x)), похоже, требует больше работы для получения того же самого (получение размеров и затем найдя макс среди них). Я привык использовать numel
в этом случае, но речь о производительности (гипотетическая) обособленно, я бы сказал, что они взаимозаменяемы.
Для массива 1-by-N они по существу одинаковы. Для многомерного массива M
они могут давать разные результаты:
Как говорят другие, они одинаковы для одномерного массива.
IMHO с точки зрения удобочитаемости кода length
следует использовать для одномерных массивов. Речь идет о "преднамеренное программирование" , вы видите код и понимаете, что программист имел в виду при задуманной работе. Поэтому, когда я вижу numel
, я знаю, что он используется на матрице.
length
vs. numel
был предметом обсуждения в нашей команде в течение ряда лет. Бывший старший разработчик не заботился о работоспособности кода, а только о том, что работа выполняется и используется только numel
в противном случае не хорошо читаемый/отформатированный код. Другой парень - математик и использовал length
только для числовых массивов, являющихся для него "реальными" массивами. Для массивов ячеек и структурных массивов он использовал numel
.