Возможный дубликат:
Как выполнить итерацию каждого элемента в n-мерной матрице в MATLAB?
У меня есть вектор-столбец list
, который я бы хотел повторить так:
for elm in list
//do something with elm
Как?
В Matlab вы можете напрямую перебирать элементы в списке. Это может быть полезно, если вам не нужно знать, к какому элементу вы сейчас работаете.
Таким образом, вы можете написать
for elm = list
%# do something with the element
end
Обратите внимание, что Matlab выполняет итерацию через столбцы list
, поэтому, если list
является вектором nx1, вы можете его транспонировать.
(:)'
: for elm = list(:)'; %... ;end
. Комбинация (:)'
будет также создавать векторы строк из матриц, поэтому обращайтесь с ними осторожно.
for i=1:length(list)
elm = list(i);
//do something with elm.
со многими функциями в Matlab, вам не нужно итерации вообще.
например, чтобы умножить на это положение в списке:
m = [1:numel(list)]';
elm = list.*m;
векторизованные алгоритмы в matlab в целом намного быстрее.
Если вы просто хотите применить функцию к каждому элементу и поместить результаты в выходной массив, вы можете использовать arrayfun
.
Как указывали другие, для большинства операций лучше избегать циклов в MATLAB и вместо вашего вектора вместо.