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