MATLABライセンスの価格が高いという不満をよく耳にします。次に、なぜOctaveやRだけを使用しないのだろうか。しかし、後者は正しいですか?R を使用して MATLAB を置き換えることはできますか?
11 に答える
R を使用して MATLAB を置き換えることはできますか?
はい。
私は何年も MATLAB を使用していましたが、この 3 年間で主に R に切り替えました。この時点で、彼らには多くの共通点があります。分野やユースケースによって部分的に異なります。そして、スペンサー・グレイブスが以前に言ったように、それは「たまたまどの教会によく行くか」にもよります。決定する前に、特定のタスクについて MATLAB ツールキットとCRANを比較することをお勧めします。
数年前に R-Help で同様の質問があり、最近でも同様の質問がありました。 David Hiebeler (メイン大学) は広範なR/MATLAB 比較を維持しており、このテーマに関する最良の参考文献です。この基本機能の比較も確認できます。
ここに私が過去に観察したいくつかの事柄がありますが、どれも契約を破るものではありません.
- 一般に、MATLAB はより優れたプログラミング環境 (より優れたドキュメンテーション、より優れたデバッガー、より優れたオブジェクト ブラウザーなど) を備えており、「より簡単に」使用できます (必要に応じて、プログラミングを行わなくても MATLAB を使用できます)。 Simulinkでは、ブロックをグラフで接続することにより、視覚的にプログラミングできます。 REvolution R は、改善されたデバッグ機能を備えたより優れた IDE を提供することで、これらの違いのいくつかに対処していますが、まだ一歩遅れています。
- MATLAB は、通常の構成では少し高速ですが (例については、このベンチマークを参照してください)、R のパフォーマンスが問題になった場合に改善するために実行できることがあります。
- 商用であるため、間違いなく、より多くの「製品」(統合されたアドオンという意味で) とサポート (ただし、有料) を備えています。製品一覧をご覧ください。たとえば、配布可能な実行可能な MATLAB プログラムを作成する MATLAB コンパイラなどがあります。
- パッケージ/ツールキットに関する限り、MATLAB は物理科学をより多くサポートしていますが、R は統計をより強力にサポートしています。また、どちらも簡単に拡張できます。
したがって、使いやすさが主要な関心事ではない場合 (そして、オープンソース ツールの使用を避けるビジネス上の理由が他にない場合) は、R を使用する正当な理由があると思います。強力なコミュニティ (R メーリング リストはすばらしい) であり、急速に発展しており (CRAN を参照)、無料です (これは小さな問題ではありません!)。
編集:これにもう1点追加します。「RとMATLABを使用した関数データ分析」という本には、「MatlabとR言語の本質的な比較」に関する章が含まれています。これは、いくつかの重要な構文の違い (ドットの解釈や角括弧 [] の意味など) をカバーしています。この本自体は、(どちらの言語でも) 関数型プログラミングに興味がある人なら誰でも読む価値があります。
R は、統計データの分析とグラフィックのための環境です。MATLAB の起源は数値計算にあります。データ操作 (行列/ベクトル操作など) に使用する場合、基本的な言語実装には多くの共通点があります。
R には他の場所では見つけにくい統計機能があり ( CRANでは 2000 以上のパッケージ)、多くの統計学者が使用しています。一方、MATLAB には、次のようなエンジニアリング アプリケーション用の (高価な) ツールボックスが多数あります。
- 画像処理・画像取得、
- フィルター設計、
- ファジー論理/ファジー制御、
- 偏微分方程式、
- 等
私は R と MATLAB の両方を使用して問題を解決し、環境工学に関連するモデルを構築しましたが、2 つのシステムには多くの重複があります。私の意見では、MATLAB の利点は専門的なドメイン固有のアプリケーションにあります。いくつかの例は次のとおりです。
流体力学の調査に役立つストリームラインなどの機能。
画像処理ツールセットなどのツールボックス。流域アルゴリズムのようなツールの同等の実装を提供する R パッケージは見つかりませんでした。
私の意見では、MATLAB ははるかに優れた対話型グラフィックス機能を提供します。ただし、アプリケーションによっては、R の方が静的な印刷品質のグラフィックスが優れていると思います。MATLAB のシンボリック数学ツールボックスも、Ryacas や rSymPy などの R に相当するものよりも統合されており、より機能的です。MATLAB コンパイラが存在することで、MATLAB コードに基づくシステムを MATLAB 環境から独立して展開することもできます。
もう 1 つ注目すべきことは、MATLAB デバッガーは私が使用した中で最高のものの 1 つであるということです。
R の主な利点は、システムのオープン性と拡張のしやすさです。これにより、CRAN のパッケージの信じられないほどの多様性が生まれました。Mathworks がユーザー提供のツールボックスのリポジトリも維持していることは知っていますが、あまり使用していないため、公正な比較はできません。
R のオープン性は、コンパイル済みコードでのリンクにも拡張されています。しばらく前に、Fortran で記述されたモデルがあり、R と MATLAB のどちらをフロントエンドとして使用して、入力の準備と結果の処理を支援するかを決定しようとしていました。コンパイルされたコードへの MEX インターフェイスについて 1 時間かけて読みました。インターフェイスを管理するために複雑なポインター ジャグリングを行う別の Fortran ルーチンを作成して維持する必要があることがわかったとき、私は MATLAB を棚上げしました。
R インターフェイスは .Fortran( [サブルーチン名], [引数リスト]) の呼び出しで構成されており、単純に高速でクリーンです。
Rに対するMATLABの大きな利点の1つは、MATLABドキュメントの品質です。オープンソースであるRは、この点で苦しんでいます。これは、多くのオープンソースプロジェクトに共通する機能です。
ただし、Rは非常に便利な環境と言語です。バイオインフォマティクスコミュニティで広く使用されており、このドメインで役立つ多くのパッケージがあります。
Rの代わりにOctave(http://www.gnu.org/software/octave/)があります。これはMATLABと非常によく似ており、MATLABスクリプトを実行できます。
私の経験では、MATLAB から Python への移行はより簡単な移行です。numpy/scipyを使用した Python は、 R よりもスタイルと機能の点で MATLAB に近いです。また、オープン ソースの直接の MATLAB クローンである OctaveとScilabもあります。
R ではできないことで MATLAB ができることは確かにたくさんあります。私の地域では、MATLAB はリアルタイムのデータ取得に多く使用されています。ほとんどのハードウェア会社には MATLAB インターフェイスが含まれています。これはRIで可能かもしれませんが、もっと複雑になると想像してください。また、Simulink は、R に欠けていると思われる機能の全領域を提供します。他にもあると確信していますが、私は R にあまり詳しくありません。
私は上記の答えの多くに同意します。答えはMATLABとRの機能の違いに固有であるため、非常に重要なものについて説明します。MATLABにはJVMが含まれており、Javaとの完璧で堅牢な相互運用性があります。Javaの広大なライブラリの世界はすべて、MATLABユーザーがアクセスできます。MATLAB IDEは、ほとんど貧乏人のEclipseとして使用できます。それに比べて、rJavaは、その作成者(Roman Francois)の非常に貴重な努力にもかかわらず、非常に未成熟です。
短い答え: いいえ、もちろん違います。数学ソフトウェア パッケージのどのセットにも重複がありますが、常に特定の問題領域に偏っています。これらのバイアスは、これらのパッケージのいずれかを使用するかどうかに大きく影響します。
R ではできないことの例として、MATLAB でできることは、信号処理/取得および制御のためのリアルタイム ハードウェアへのインターフェイスです。MATLABのSimulinkモデルは、実際のシステムで実行するコードをコンパイルする前に、測定データを入力として取得し、適切な出力を計算する前に、マシンのシミュレーションで実行するように構成できます (制御システムのシミュレーションが完全に機能するようになる前は、 1)。マシンに適切なハードウェア ボードを使用すると、PC を介してリアルタイム制御システムを実行できます。
対照的に、R は統計の役割をしっかりと果たしているようで、MATLAB よりも優れたパフォーマンスを発揮すると確信しています。同様に、Mathematicaは記号演算で MATLAB よりも優れています。Python は、一般的なプログラミングでは MATLAB よりも優れています。gnuplotは、実際にグラフを作成する点でそれらすべてよりも優れています (ええと、私は思います)。等々。
お客様から期待・要望されているため、できません。
sqldf パッケージを使用すると、R は統計だけでなく、本格的なデータ マイニングも実行できます (マシンに十分な RAM がある場合)。
また、RServe パッケージを使用すると、R は通常の TCP/IP サーバーになります。そのため、Java (または API がある場合は他の言語) から R を呼び出すことができます。Java out または R を呼び出す R のパッケージもあります。
MATLAB と R の両方のユーザーとして、これらは非常に異なるアプリケーションだと思います。私自身、コンピュータ サイエンスなどのバックグラウンドを持っているので、R は統計学者による統計学者によるものであるのに対し、MATLAB はプログラマによるプログラマによるものであると考えずにはいられません。
R を使用すると、あらゆる種類の統計情報を視覚化して計算することが非常に簡単になりますが、信号処理に関連するものを実装するために R を使用することはありません。
要約すると、統計を行いたい場合は R を使用します。プログラミングを行う場合は、MATLAB または何らかのプログラミング言語を使用します。
インタラクティブグラフィックスのサポートは、Rよりもmatlabの方がはるかに優れています。言語としてのmatlabは嫌いですが、ユーザーがマウス操作でデータを探索する方法を見ると、xlim
などの新しい値でコマンドを繰り返すのに忙しく、嫉妬します。 Matlabは、タスクのどのRメソッドよりもはるかに優れたマルチパネルプロットも処理します。一般的に、Rグラフィックスは1960年代の雰囲気を持っています。公開には問題ありませんが、データをインタラクティブに探索するための最良のソリューションではありません。