Как перебрать вектор-столбец в Matlab? [Дубликат]

38

Возможный дубликат:
Как выполнить итерацию каждого элемента в n-мерной матрице в MATLAB?

У меня есть вектор-столбец list, который я бы хотел повторить так:

for elm in list
   //do something with elm

Как?

  • 0
    Я также хочу, чтобы вы знали, прибегая к помощи терминов «итерация по матрице matlab», в качестве результата 2 возвращается stackoverflow.
Теги:
iteration

4 ответа

73
Лучший ответ

В Matlab вы можете напрямую перебирать элементы в списке. Это может быть полезно, если вам не нужно знать, к какому элементу вы сейчас работаете.

Таким образом, вы можете написать

for elm = list
%# do something with the element
end

Обратите внимание, что Matlab выполняет итерацию через столбцы list, поэтому, если list является вектором nx1, вы можете его транспонировать.

  • 0
    Также не хорошо, если вы хотите изменить значение содержащих элементов
  • 4
    Если вы не знаете, является ли список столбцом или вектором строки, вы можете использовать довольно некрасивую комбинацию (:)' : for elm = list(:)'; %... ;end . Комбинация (:)' будет также создавать векторы строк из матриц, поэтому обращайтесь с ними осторожно.
Показать ещё 2 комментария
28
for i=1:length(list)
  elm = list(i);
  //do something with elm.
5

со многими функциями в Matlab, вам не нужно итерации вообще.

например, чтобы умножить на это положение в списке:

m = [1:numel(list)]';
elm = list.*m;

векторизованные алгоритмы в matlab в целом намного быстрее.

2

Если вы просто хотите применить функцию к каждому элементу и поместить результаты в выходной массив, вы можете использовать arrayfun.

Как указывали другие, для большинства операций лучше избегать циклов в MATLAB и вместо вашего вектора вместо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню