web-dev-qa-db-ja.com

Python vs Matlab

MATLABからPythonへの切り替えを検討しています。アプリケーションは量的取引であり、コストは実際には問題ではありません。私がMATLABについて気に入っている点がいくつかあり、Pythonがどのように積み上げられるかを疑問に思っています(私が読んだレビューで答えを見つけることができませんでした)。

  1. IDE for Python for the MATLAB's(variable editor、debugger、profiler))はありますか?私はSpyderについて良いことを読みましたが、プロファイラーはありますか?

  2. MATLABでパス上の関数を変更すると、自動的に再読み込みされます。ライブラリを変更するときに、ライブラリを手動で再インポートする必要がありますか、それとも自動的に行うことができますか?これは些細なことですが、実際には私の生産性が大幅に向上します。

26
Rich C

IDE:いいえ。Python IDEは、MATLABほど優れているわけではありませんが、Wing IDEについて良いことは聞いたことがあります。一般的に、Python開発、そしてよくセットアップされたテキストエディター(私の場合はvim)と独立したビジュアルデバッガー(WinPDB)の方が生産性が高いことがわかります。

関数の変更:変更後、reload()組み込み関数を使用してモジュールを再ロードする必要があります。

import foo
#now you've changed foo.py and want to reload it
foo = reload(foo)

Pythonは複雑さの方がはるかに扱いやすく、つまり、Pythonで複雑なコードを記述、デバッグ、維持するのが簡単だと思うので、MATLABからPythonに切り替えました。この理由は、Pythonは、専門の行列操作言語ではなく、汎用言語であるためです。このため、文字列、非数値配列、および(重要な)連想配列(またはマップまたは辞書)は、クラスと同様に、Pythonのファーストクラスの構成要素です。

機能に関しては、NumPy、SciPy、およびMatplotlibを使用すると、MATLABが提供する機能の完全なセットと、個別のツールボックスを購入する必要のあるかなり多くの機能をほぼ利用できます。

19
Chinmay Kanchi

私はPython(x、y)ディストリビューションのSpyder IDEをうまく使っています。私はMatlabの長期間のユーザーであり、10年ほどPythonの存在を知っていますが、Python定期的に。

12
Ian Hopkinson

次のスレッドでいくつかの回答を確認することもできますが、2つの主要な懸念には対応していません。

Pythonに切り替えますか?

私もMatlabからの完全な変換者です。

  1. 私はまだフル機能のPython IDEを使用していませんが、Matplotlib、Numpy、Scipyなどと組み合わせてIPythonでかなりうまくいっています。実際にEnthough Python私が必要とするほとんどの科学的/定量的パッケージがプリロードされているディストリビューションPython(x、y)とSageについても良いことを聞いています

  2. たぶん他のIDEがこれを処理しますが、IPythonではかなりうまく機能するautoreloadを使用します。

他の人が述べたように、数値/量的ライブラリはPythonになり、言語を上からハッキングする数値ライブラリではなく、Matlabにはない驚くほどの柔軟性があります。また、Pythonコミュニティ、特に数値的/量的領域では、コミュニティは本当に素晴らしいです。

8
JoshAdel

私はここしばらくエンジニアリング分野に携わっており、複雑な数学計算には常にMATLABを使用してきました。本当に大きな問題は一度もありませんでしたが、あまり熱心ではありませんでした。数か月前、私は数値メソッドクラスのTAになる予定であり、Pythonを使用して教えられるため、言語を学ぶ必要があることを知りました。私が最初に余分な仕事をすると思ったのは、素晴らしい趣味であることがわかりました。私は、MATLABがPythonと比較してどれほど悪いかを説明することすらできません!かつてMatlabでのコード作成に1日かかっていたものが、Pythonで書くのに数時間しかかかりませんでした。私のコードも非常に魅力的に見えます。 Pythonのパフォーマンスと柔軟性に本当に驚かされました。 Pythonを使用すると、MATLABで使用していたことを文字通り何でも実行でき、はるかに効率よく実行できます。

他の誰かが切り替えについて考えている場合は、それを行うことをお勧めします。それは私の人生をずっと楽にしました。 「計算科学のためのPythonスクリプト」は、MATLABよりもPython)の長所を説明しているので引用します。

  • pythonプログラミング言語はより強力です
  • python環境は完全にオープンで、外部ツールとの統合用に作成されています。
  • 多くの関数とクラスを備えた完全なツールボックス/モジュールを1つのファイルに含めることができます(Mファイルの束とは対照的)。
  • 関数への引数として関数を転送する方が簡単です。
  • ネストされた異種データ構造は、構築および使用が簡単です。
  • オブジェクト指向プログラミングはより便利です
  • c、C++、およびFortranコードのインターフェースがより適切にサポートされるため、より簡単になり、
  • スカラー関数は、配列引数を使用して(算術演算子を変更せずに)より広範囲に機能します。
  • ソースは無料で、より多くのプラットフォームで動作します。
5
Rang Dipkin

私たちは Wing IDE をPython開発に使用します。これは非常に優れた機能で、デバッグサポートが統合されており、任意のプロファイラーに接続できます。

(2)については、LISPからのまったく同じ機能が見当たらないので、ライブラリを変更した後でライブラリを積極的に再インポートする必要があることを知っているので、あなたの意味を正確に理解しています。ただし、これは本当の問題ではありません。気になるすべてのモジュールに対してそれを行う小さな関数を(一度)簡単に記述し、その関数をキーマクロに置くことができるので、egコードを変更した後、CTRL-Tを押します。

3
Crashworks

多くのエディターとの長い長いトライアウトの後、私は編集に最適なaptana ide + ipython(インターネットブラウザーのノートブックを含む)に落ち着きました。

aptanaはEclipseと同じですが(pydevのため)、aptanaにはテーマがあり、Eclipseにはない小さな点があります

約python少し、パンダを忘れないでください。それはデータ分析のための非常に強力なツールであるため(私は信じています)将来的には野獣になると思います

私はmatlabを研究しています、そこにいくつかのきちんとしたもの、特にguiインターフェースと他のいくつかの素晴らしいものを見つけました

しかしpythonは柔軟性と使いやすさを提供します。とにかく、Python、matplotlib、numpy(および最終的にはパンダ)の基本を学ぶ必要があります

しかし、私が見るところから、numpyとmatplotlibはmatplotlibの概念に似ています(おそらくそれらはmatlabを念頭に置いて作成されたのでしょう?)

2
user689829

Pythonは複雑さをはるかにうまく処理できるため、MATLABからPythonに切り替えることができます。つまり、複雑なコードの記述、デバッグ、維持が簡単になります。その良い理由の1つは、Pythonが行列操作言語ではなく、汎用言語であることです。このため、非数値配列、文字列、連想配列などのエンティティは、Pythonの第一級の構成要素です。

MatlabからPythonに移行する人や研究グループ全体について定期的に耳にします。科学的なPythonエコシステムは急速に成熟しており、Pythonは魅​​力的な代替手段です。それは、freeオープンソース、そしてますます強力になる。それらについて詳しく見ていきましょう。


MatlabとPythonのエコシステム

定義上、Pythonはプログラミング言語です。最も一般的な実装は、CPythonとしても知られているCでの実装であり、Pythonと呼ばれています。プログラミング言語とインタープリターは別として、Pythonは、広範な標準ライブラリで構成されています。このライブラリは、一般的なプログラミングを目的としており、OS固有のもの、スレッド、ネットワーク、データベースなどのモジュールが含まれています。

Matlabは商用数値計算環境およびプログラミング言語です。 Matlabの概念は、IDEを含むパッケージ全体を指します。標準ライブラリには、それほど一般的なプログラミング機能は含まれていませんが、行列代数とデータ処理およびプロット用の広範なライブラリが含まれています。追加機能のために、Mathworksはツールキットを提供します(ただし、これらは追加の機能を提供します)。

Pythonで科学計算を行うには、追加のパッケージが必要です(例:NumpyScipyMatplotlib)。さらに、[〜#〜] ide [〜#〜]が必要です。多くのpythoneerはLinux環境から来ており、Pythonシェルとエディター(viやEmacsなど)を使用していますが、Matlabから来た人々は機能豊富なIDEを好みます。 PyCharmSpyderJupyter Notebookなど、IDEで使用できるPythonがたくさんあります。 などなど。

Pythonパッケージは、パッケージのユーザーでもある別の(ただし、多くの場合は重複している)グループによって開発されています。多くのパッケージがさまざまな目的で利用できます。このオープンソースエコシステムでは、ほとんどのパッケージが少数のコア開発者によって推進されていますが、パッケージユーザーの多くは、問題の報告、ドキュメントの作成、コードの小さな改善によって開発に貢献しています。


Matlabの利点

Matlabから得られるいくつかの利点を取り上げましょう。

  • 確かな機能を持っています。 Simulinkは、良い代替手段がまだない製品です。
  • Pythonでは追加のパッケージとIDEをインストールする必要がある一方で、パッケージには必要なものがすべて含まれているため、初心者にとっては簡単かもしれません。
  • それは大きな科学コミュニティを持っています。多くの大学で使用されています(ライセンスを購入するための資金を持っている会社はほとんどありません)。

Matlabの問題

ここでは、Matlabの見栄えを悪くするつもりはありません。私は以前Matlabを愛していた。ただし、Matlabにはいくつかの根本的な欠点があると思います。これらのほとんどは、その商業的性質から生じています。

  • アルゴリズムは独自仕様です。つまり、使用しているほとんどのアルゴリズムのコードを見ることができず、それらが正しく実装されていることを信頼する必要があります。

  • Matlabは非常に高価です。つまり、Matlabで書かれたコードは、ライセンスを購入するのに十分な資金を持つ人しか使用できません。

  • 当然ながら、Mathworksはコードの移植性、つまり他の人のコンピューターでコードを実行する機能に制限を課します。 Matlab Component Runtime (MCR)を使用してコンパイル済みアプリケーションを実行できますが、ポータブルアプリはインストール済みのMCRのバージョンと正確に一致する必要があります。 。

  • 独自の性質により、サードパーティがMatlabの機能を拡張することも困難になります。

さらに、マトリックス操作パッケージとしてMatlabsの起源に起因する他の問題がいくつかあります。

  • セミコロン。コンソールでコードを入力するときに結果を表示すると便利ですが、スクリプトでは、出力を抑制するために行をセミコロンで終了する必要があることは意味がありません。
  • 索引付けは大括弧ではなく中括弧を使用して行われるため、関数呼び出しと区別することは困難です。

Pythonの利点

Python言語は、ゲーム開発、Webフレームワークおよびアプリケーション、言語開発、プロトタイピング、グラフィックデザインアプリケーションなどのソフトウェア開発会社で多様化したアプリケーションを持っています。これにより、この言語は、業界。 Pythonの利点を取り上げる前に、クイックツアー here を行ってください。それではいくつかの利点を見てみましょう-

  • 広範なサポートライブラリ

    文字列操作、インターネット、Webサービスツール、オペレーティングシステムインターフェイス、プロトコルなどの領域を含む大規模な標準ライブラリを提供します。 Pythonで記述されるコードの長さを制限する、よく使用されるプログラミングタスクのほとんどは、すでにスクリプト化されています。

  • 統合機能

    Pythonは、COMまたはCobraコンポーネントを呼び出すことにより、Webサービスの開発を容易にするエンタープライズアプリケーション統合を統合します。 Jythonを介してC、C++またはJavaから直接呼び出すため、強力な制御機能を備えています。 Pythonは、XMLおよびその他のマークアップ言語も処理します。これは、同じバイトコードを介してすべての最新のオペレーティングシステムで実行できるためです。

  • プログラマーの生産性の向上

    言語には、Java、VB、Perl、C、C++、C#などの言語を使用しながら、プログラマの生産性を2倍から10倍向上させる広範なサポートライブラリとクリーンなオブジェクト指向設計があります。

  • 生産性

    強力なプロセス統合機能、ユニットテストフレームワーク、強化された制御機能により、ほとんどのアプリケーションの速度向上とアプリケーションの生産性向上に貢献します。スケーラブルなマルチプロトコルネットワークアプリケーションを構築するための優れたオプションです。


Pythonの欠点

Pythonにはさまざまな有利な機能があり、プログラマーも学習やコーディングが容易であるため、他のプログラミング言語よりもこの言語を好みます。ただし、この言語は、エンタープライズ開発ショップを含む一部のコンピューティング分野ではまだ定着していません。したがって、この言語では一部のエンタープライズソリューションを解決できない可能性があります。

  • 他の言語の使用の難しさ

    Pythonの愛好家は、その機能とその広範なライブラリに慣れ親しんでいるため、他のプログラミング言語の学習や作業で問題に直面しています。 Python専門家は、キャストvaluesまたは変数typesの宣言、中括弧またはセミコロンを追加する構文要件が面倒なタスクであると考えるかもしれません。

  • モバイルコンピューティングの弱点

    Pythonは多くのデスクトップおよびサーバープラットフォームで存在感を示していますが、モバイルコンピューティングには弱い言語と見なされています。これが、Carbonnelleのようにモバイルアプリケーションがほとんど組み込まれていない理由です。

  • 速度が遅くなる

    Pythonはコンパイラーの代わりにインタープリターの助けを借りて実行されますが、コンパイルと実行が正常に機能するのを助けるため、Pythonの速度が低下します。一方、多くのWebアプリケーションでも高速であることがわかります。

  • 実行時エラー

    Python言語は動的に型付けされるため、一部のPython開発者から報告されている多くの設計上の制限があります。さらに多くのテスト時間が必要であることがわかり、アプリケーションが最終的に実行されるときにエラーが表示されます。

  • 未開発のデータベースアクセスレイヤー

    JDBCやODBCなどの一般的なテクノロジーと比較して、Pythonのデータベースアクセスレイヤーは開発が不十分でプリミティブであることがわかります。ただし、複雑なレガシーデータのスムーズな相互作用を必要とする企業には適用できません。


Matlabに対するPythonの利点

  1. PythonコードはMatlabコードよりもコンパクトで読みやすい

    • Endステートメントを使用してブロックの終わりを示すMatlabとは異なり、Pythonはインデントに基づいてブロックサイズを決定します。

    • Pythonは角括弧をインデックスと関数とメソッドの括弧に使用しますが、Matlabは括弧を両方に使用するため、Matlabの区別と理解が難しくなります。

    • Pythonの可読性が向上すると、バグが減り、デバッグが速くなります。

  2. Pythonを含むほとんどのプログラミング言語はゼロベースのインデックス付けを使用しますが、Matlabは1ベースのインデックス付けを使用するため、ユーザーが翻訳するのがより複雑になります。

  3. Pythonのオブジェクト指向プログラミング(OOP)は単純な柔軟性ですが、MatlabのOOPスキームは複雑で混乱を招きます。

  4. Pythonは無料でオープンです

    • Pythonはオープンソースプログラミングですが、Matlabの多くはクローズされています

    • Pythonの開発者はユーザーにソフトウェアの提案を入力するように促しますが、Matlabの開発者はそのような相互作用を提供しません

    • Pythonは、グラフィックパッケージとツールセットで幅広い選択肢を提供します

NumPySciPy、およびMatplotlibを使用すると、MATLABが提供する機能のセット全体をほぼそのまま使用でき、非常に多くの機能を使用できます。別のツールボックスを購入する。

ただし、MatLabコミュニティには、選択する独自の引数があります MatlabまたはPython 、(はい、真剣です)。良い読書も。

2
iNet

ほとんどすべてが他の人によってカバーされています。。optimizarionツールボックス、ニューラルネットワークなどのツールボックスが必要ないことを願っています。[pythonでこれらが見つからなかった可能性があります。 。私はそれらがMatlabのものより良いかもしれないと真剣に疑っています。

あなたがシンボリック操作機能を必要とせず、windowsを使用している場合python(x、y)は行く方法です(彼らはLinuxポートで多くの活動をしていません(古いバージョンが利用可能です)](またはいくつかのマイナーなシンボリック操作が必要です) sympyを使用してください。EPDとpython(x、y)がEPDに取って代わるか、EPDを統合すると思います)

シンボリック機能が必要な場合は、賢明な方法が適しています。IMHO賢明な方法は、MathematicaだけでなくMatlabにも適しています。

私もスイッチを作ろうとしています...(私のengg projsが必要です)

それが役に立てば幸いです。

2
fedvasu

この質問は2011年に行われました。

ごく最近、2013年半ばに、主にMatlabのようなSpyder IDEと、Scientific全体のオールインワンインストーラーが利用可能になったため、完全にPythonに変換されましたPython &IDE環境。

PythonXY (Windowsのみ)および Continuum Analytics 'Anaconda (Mac/Win/Linux)を使用すると、MATLABのようなIDE(Spyder)、変数インスペクター、ファイルエクスプローラー、オブジェクトインスペクター(入力した関数のライブヘルプを表示する)など。これで、Matlabが完全に置き換えられました。

2
Demis

私は最近、MATLABからPython(移行まで約2か月)に切り替えました。SublimeRopeプラグインとSublimeLinterプラグインを使用して、いくつかのIDE-を提供するSublime Text 2を使用してかなりうまく進んでいます。同様の機能、およびいくつかのグラフィカルな対話型デバッグ機能を提供するpudb。

プロファイラーや変数エディターについてはまだ調べていません。 (とにかく、MATLAB変数エディターを実際に使用したことはありません)。

1
William Payne

IDEの質問については、 What IDE to use to use for Python? をご覧ください。ここで、トップの答えは PyDev はEclipseを使用します。

Sage も一見の価値があると思う

1
Tobias Kienzler