web-dev-qa-db-ja.com

Matlabで列ベクトルを反復処理する方法は?

可能性のある複製:
MATLABのn次元行列の各要素を反復処理する方法は?

次のように繰り返したい列ベクトルlistがあります。

for Elm in list
   //do something with Elm

どうやって?

49
snakile

Matlabでは、リスト内の要素を直接繰り返すことができます。これは、現在作業中の要素を知る必要がない場合に役立ちます。

したがって、あなたは書くことができます

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

Matlabはlistの列を反復処理することに注意してください。したがって、listがnx1ベクトルの場合、転置することができます。

91
Jonas
for i=1:length(list)
  Elm = list(i);
  //do something with Elm.
30
James

matlabの多くの関数を使用すると、まったく繰り返す必要がありません。

たとえば、リスト内の位置で乗算するには:

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

一般に、matlabのベクトル化されたアルゴリズムははるかに高速です。

6
Marc

関数を各要素に適用し、結果を出力配列に格納するだけの場合は、 arrayfun を使用できます。

他の人が指摘したように、ほとんどの操作では、MATLABと 代わりにコードをベクトル化する のループを避けるのが最善です。

2
del