2012-01-31 3 views
1

Matlabをしばらく(2年)使用した後、私はPythonを試しましたが、実際に便利なMatlabの機能にもかかわらず、Pythonは本当に好きです。MatlabのPythonのサイクルのために

私は仕事のために、再びMatlabを使用しています。時には、Pythonのforループのような構造が欠けていることがあります。 Matlabが提供する標準の 'for'を使用する代わりに、同様のデータのプロセスバッチと類似した構造がありますか?

+0

google matlab? –

+0

@JohanLundberg私はforループが何であるかを知っています。単純に私はMatlab forループがCと同じだと考えました。とにかくありがとうございます – clabacchio

+0

http://stackoverflow.com/questions/how-to-ask –

答えて

3

そういう意味ですか?

for val = {'Hello', 'world', '!'} 
    disp(val) 
end 

for val = [1 3 6 9] 
    disp(val) 
end 
+0

ああいいですね!既存の配列を解析することはできますか? k = Xの場合は – clabacchio

+0

、 disp(k); end – Alex

+0

はい、クレメントの答えの後、私はドキュメンテーションを見て試したので、どのように動作するかを見出しました。ありがとうございました! – clabacchio

1

この回答に加えて、MATLABのforループが非常に遅いことに注意してください。

たぶんarrayfuncellfun()structfun()を使用して機能的なスタイルでプログラミングすることは手軽解決策になるかもしれない、とPythonのmap()に非常に近いです。

+0

ありがとう、私はそれを知らなかった!しかし、私の知らなかったのは残念ですが、長い配列の場合にのみ、大きなアイテムの小さな配列に対しては当てはまりません。 – clabacchio

+0

私は知らない。私はそれらを頻繁に使用しますが、実行速度のばらつきに関するテストは行っていません。 – glglgl

+1

最新のMatlabバージョンでは、 'for'ループは遅くはありません。ループ本体の中で繰り返される操作のオーバーヘッドです。 'arrayfun'、' cellfun'、および 'structfun'関数はすべて" vectorized "ではなく反復的でもあり、forループと同じくらい遅いことがよくあります。場合によっては、JITがインプレース最適化を実行したり、その他のオーバーヘッドが発生するのを防ぐためです。高速化するには、配列全体に組み込み関数を適用するベクトル化された演算を呼び出すためのデータとコードを構造化する必要があります。速度を別にすれば、 'xxxfun()'関数は素晴らしいです。 –

関連する問題