私はmatlabでリスト内包のようなものを探していますが、私はドキュメンタリーでこれを見つけることができませんでした。 PythonでmatlabそれはPythonのようにリストの理解のようなものがありますか?
それはありません、MATLABは、リストの内包表記を持っていない
A=[i/50 for i in range(50)]
私はmatlabでリスト内包のようなものを探していますが、私はドキュメンタリーでこれを見つけることができませんでした。 PythonでmatlabそれはPythonのようにリストの理解のようなものがありますか?
それはありません、MATLABは、リストの内包表記を持っていない
A=[i/50 for i in range(50)]
Matlabのリスト内包表記はあまり有用で作り、直接配列を扱うことができます。焦点はアレイレベルの計算であるべきなあなたは本当に、それを必要としません。例を次のように記述します。
A = (0:49) ./ 50
Matlabはループを嫌うのでリストの理解度が高いです。つまり、arrayfun
の機能を見てください。
MATLAB * hates * loops?そう思わないでください。それはあなたに物事をするための他の方法を提供するだけです。その結果、あなたは結局それらを憎んでしまいます。 – ktdrv
私は最終的にMATLABで一般的なループではなくループを書くのが嫌いです。私と私のMATLABはたくさんのことをしてきました...もしソフトウェアが共感できれば、今度はループも嫌いでしょう。 –
これは、matlabとpythonが似ている領域であることを指摘する価値があります。 Pythonも(Cのようなコンパイルされた言語と比較して)ループ時に遅くなります。計算時間が重要な場合は、通常はnumpyを使用して、可能な限りPythonでベクター化を試みるべきです。 – Caleb
ようなものになるだろう。
A = (1:50)/50
MATLABは「ベクトル化」がとても好きです
あなたが何をしようとしていることはあなたは、単にスカラー除算を行うことができ、サンプルと同じくらい簡単です場合:あなたが行うことができます
A = (0:50) ./ 50
Matlabでリストを生成する方法はいくつかありますが、0から49/50まで増分しますサム・ロバーツは、これらのリストのすべてが同等であるべきにもかかわらず、コメントで指摘したように1/50
A = (0:49)/50
B = 0:1/50:49/50
C = linspace(0,49/50,50)
EDITのメントは、数値的な結果は、浮動小数点エラーとは異なります。例:
max(abs(A-B))
ans =
1.1102e-16
Aのこれらの値はどれも同じではありません!それらをA、B、Cと呼んで、すべてのものと比較する(A == B)など。コロン、コロン、およびコロンの異なる動作における面白い演習。私はPythonについてゼロを知っていますが、このスレッドの誰かがこれらの3つのMATLABオプションをPythonのリストの理解と比較することができれば有用かもしれません。編集:私の-1を削除し、私は重要な音を意味しなかった、それは良い答えだった。 –
@SamRoberts:それは非常に良い点です。理論的には、すべてのソリューションは同等である必要がありますが、その結果は浮動小数点エラーのために同一ではありません。 – Jonas
私はこれまでのコメントを理解できるように、@Jonasはもともと変数A、B、CをすべてAと呼んでいました。編集後、彼の答えは今よりはっきりしていますが、私のコメントはあまり意味がありません... –
http://www.scipy.org/NumPy_for_Matlab_Users役に立つと思われます。 Numpyでは、速度のリストの理解の代わりに、おそらく 'A = np.arange(50)/ 50.0'を実行することに注意してください。 – mtrw
@mtrw Great link.Thanks –