Для петель в Matlab - PullRequest
       18

Для петель в Matlab

0 голосов
/ 02 июня 2010

Я запускаю цикл for, каждый раз извлекая определенные элементы массива, например, element1, element2 и т. Д. Как мне затем объединить все элементы, которые я извлек вместе, чтобы у меня был их список?1001 *

Ответы [ 3 ]

3 голосов
/ 02 июня 2010

Джон охватил основы for петель, поэтому ...

Обратите внимание, что код Matlab часто более эффективен, если вы векторизуете его вместо использования циклов (это менее верно, чем раньше) Например, если в вашем цикле вы просто захватываете первое значение в каждой строке матрицы, вместо цикла вы можете сделать:

yourValues = theMatrix(:,1)

Где сольный оператор : указывает «каждое возможное значение для этого индекса». Если вы только начинаете изучать Matlab, определенно стоит прочитать индексирование матриц в Matlab (среди других тем).

1 голос
/ 02 июня 2010

Постройте список по ходу дела:

for i = 1:whatever
    ' pick out theValue
    yourList(i) = theValue
end

Я предполагаю, что вы выбираете один элемент за цикл итерации. Если нет, просто сохраните счетчик и используйте его вместо i.

Кроме того, я не , предполагая, что вы вытягиваете свои элементы из одной и той же позиции в вашем массиве каждый раз через цикл. Если вы делаете это, то посмотрите на предложение Донни.

0 голосов
/ 02 июня 2010

В MATLAB вы всегда можете выполнить операцию цикла. Но рекомендуемый способ "MATLAB" - избегать циклов:

Предположим, вы хотите получить подмножество элементов массива

destArray = [];
for k=1:numel(sourceArray)
   if isGoodMatch(sourceArray(k))
      destArray = [destArray, sourceArray(k)]; % This will create a warning about resizing
   end
end

Вы выполняете ту же задачу без зацикливания:

matches = arrayfun(@(a) isGoodMatch(a), sourceArray);  % returns a vector of bools
destArray = sourceArray(matches);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...