Matlabをしばらく(2年)使用した後、私はPythonを試しましたが、実際に便利なMatlabの機能にもかかわらず、Pythonは本当に好きです。MatlabのPythonのサイクルのために
私は仕事のために、再びMatlabを使用しています。時には、Pythonのforループのような構造が欠けていることがあります。 Matlabが提供する標準の 'for'を使用する代わりに、同様のデータのプロセスバッチと類似した構造がありますか?
Matlabをしばらく(2年)使用した後、私はPythonを試しましたが、実際に便利なMatlabの機能にもかかわらず、Pythonは本当に好きです。MatlabのPythonのサイクルのために
私は仕事のために、再びMatlabを使用しています。時には、Pythonのforループのような構造が欠けていることがあります。 Matlabが提供する標準の 'for'を使用する代わりに、同様のデータのプロセスバッチと類似した構造がありますか?
そういう意味ですか?
for val = {'Hello', 'world', '!'}
disp(val)
end
for val = [1 3 6 9]
disp(val)
end
ああいいですね!既存の配列を解析することはできますか? k = Xの場合は – clabacchio
、 disp(k); end – Alex
はい、クレメントの答えの後、私はドキュメンテーションを見て試したので、どのように動作するかを見出しました。ありがとうございました! – clabacchio
この回答に加えて、MATLABのfor
ループが非常に遅いことに注意してください。
たぶんarrayfun
、cellfun()
とstructfun()
を使用して機能的なスタイルでプログラミングすることは手軽解決策になるかもしれない、とPythonのmap()
に非常に近いです。
ありがとう、私はそれを知らなかった!しかし、私の知らなかったのは残念ですが、長い配列の場合にのみ、大きなアイテムの小さな配列に対しては当てはまりません。 – clabacchio
私は知らない。私はそれらを頻繁に使用しますが、実行速度のばらつきに関するテストは行っていません。 – glglgl
最新のMatlabバージョンでは、 'for'ループは遅くはありません。ループ本体の中で繰り返される操作のオーバーヘッドです。 'arrayfun'、' cellfun'、および 'structfun'関数はすべて" vectorized "ではなく反復的でもあり、forループと同じくらい遅いことがよくあります。場合によっては、JITがインプレース最適化を実行したり、その他のオーバーヘッドが発生するのを防ぐためです。高速化するには、配列全体に組み込み関数を適用するベクトル化された演算を呼び出すためのデータとコードを構造化する必要があります。速度を別にすれば、 'xxxfun()'関数は素晴らしいです。 –
google matlab? –
@JohanLundberg私はforループが何であるかを知っています。単純に私はMatlab forループがCと同じだと考えました。とにかくありがとうございます – clabacchio
http://stackoverflow.com/questions/how-to-ask –