MATLAB ライセンスがどれほど高価なのかと不満を言う人がよくいます。次に、なぜ Octave または R を使用しないのか疑問に思います。しかし、後者は正しいですか? Rを使用してMATLABを置き換えることはできますか?
Rを使用してMATLABを置き換えることはできますか?
はい。
私はMATLABを何年も使用していましたが、過去3年間で主にRに切り替えました。この時点で、それらには共通点があります。それはあなたのフィールドとユースケースに部分的に依存します。 スペンサーグレイブスが以前に言ったように のように、それはまた、「あなたがたまたま教会にいる」ことに依存します。決定する前に、特定のタスクについて MATLABツールキット vs. CRAN を見るのが最善です。
同様の質問 数年前にR-Helpで尋ねた と また最近 。 David Hiebeler (メイン大学)は、広範な R/MATLAB比較 であり、主題に関する最良のリファレンスです。 この基本機能の比較 を確認することもできます。
過去に私が観察したことのいくつかを以下に示しますが、いずれも取引を中断するものではありません。
したがって、使いやすさが第一の関心事でない場合(そしてオープンソースツールを使用することを避ける他のビジネス上の理由がない場合)、Rを使用するための実際のケースがあると思います。その周りの強力なコミュニティ(Rメーリングリストは素晴らしい)、急速に発展しています(CRANを参照)、そしてfree(小さな問題ではありません) !)。
編集: これにもう1つだけポイントを追加します。本 「RとMATLABを使用した機能データ解析」 には、「Matlab言語とR言語の重要な比較」に関する章が含まれています。これには、いくつかの重要な構文の違い(ドットの解釈、角括弧[]の意味など)が含まれます。この本自体は、関数型プログラミング(どちらの言語でも)に興味がある人にとっては読む価値があります。
Rは、統計データ分析とグラフィックスのための環境です。 MATLABの起源は数値計算にあります。基本的な言語実装には、データ操作(マトリックス/ベクトル演算など)に使用する場合、多くの共通機能があります。
Rには他の場所で見つけるのが難しい統計機能( CRAN で2000以上のパッケージ)があり、多くの統計学者が使用しています。一方、MATLABには、次のようなエンジニアリングアプリケーション用の(高価な)ツールボックスがたくさんあります
RとMATLABの両方を使用して問題を解決し、環境工学に関連するモデルを構築しましたが、2つのシステムには多くの重複があります。私の意見では、MATLABの利点は、特定のドメイン固有のアプリケーションにあります。以下に例を示します。
流体力学の調査を支援する合理化などの機能。
画像処理ツールセットなどのツールボックス。私は、watershedアルゴリズムのようなツールの同等の実装を提供する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 もあります。
確かに、MATLABでできることは、Rではできないことです-私の分野では、MATLABはリアルタイムのデータ収集に多く使用されています-ほとんどのハードウェア会社には、MATLABインターフェイスが含まれています。これはRで可能かもしれませんが、もっと複雑になると思います。また、Simulinkは、Rにはない機能の全領域を提供します。他にもあると確信していますが、Rにはあまり詳しくありません。
簡単な答え:いいえ、もちろんそうではありません。数学ソフトウェアパッケージのセットには重複部分がありますが、常に特定の問題領域に偏っています。これらのバイアスは、これらのパッケージのいずれかを使用するかどうかに強く関係します。
RができないことでMATLABができることの例は、信号処理/集録および制御のためのリアルタイムハードウェアへのインターフェイスです。 MATLABの Simulink モデルは、測定データを入力として取得し、適切な出力を計算する実際のシステムで実行するコードをコンパイルする前に、マシンでシミュレーションで実行するように構成できます(制御システムが完全に機能するようになりました)。マシンに適切なハードウェアボードがあれば、PCを介してリアルタイムの制御システムを実行できます。
対照的に、Rは統計の役割にしっかりと設定されているようで、MATLABでできることよりも優れていると確信しています。同様に、シンボリック数学では Mathematica がMATLABよりも優れています。 Pythonは、一般的なプログラミングでMATLABより優れています。 gnuplot は、実際にグラフを作成する際にそれらすべてより優れています(つまり、私は推測します)。等々。
上記の回答の多くに同意します。答えはMATLABとRの機能のdiffsetに固有であるため、非常に重要なものに言及します。MATLABにはJVMが含まれており、Javaとの完璧で堅牢な相互運用性があります。 Javaの膨大なライブラリのすべてに、MATLABユーザーがアクセスできます。 MATLAB IDEは、貧しい人のEclipseとしてほとんど使用できます。対照的に、rJavaは作成者(Roman Francois)の非常に貴重な努力にもかかわらず、非常に未熟です。
顧客が期待/要求しているため、私たちはできません。
Sqldfパッケージを使用すると、Rは統計だけでなく、深刻なデータマイニングも可能になります-マシンに十分なRAMがあると仮定します。
RServeパッケージにより、Rは通常のTCP/IPサーバーになります。そのため、Java(またはAPIがある場合は他の言語)からRを呼び出すことができます。 Rには、Java outまたはRを呼び出すパッケージもあります。
MATLABとRの両方のユーザーとして、彼らは非常に異なるアプリケーションだと思います。私自身はコンピューターサイエンスなどのバックグラウンドを持っています。Rは統計学者の統計学者によるもので、MATLABはプログラマーのプログラマーによるものであると考えるのは仕方ありません。
Rを使用すると、あらゆる種類の統計情報の視覚化と計算が非常に簡単になりますが、私が使用する場合は、信号処理関連の実装には使用しません。
要約すると、統計を行う場合はRを使用します。プログラムする場合は、MATLABまたはプログラミング言語を使用します。
インタラクティブグラフィックスのサポートは、Rよりもmatlabの方がはるかに優れています。言語としてmatlabが嫌いですが、ユーザーがマウス操作でデータを探索する方法を見るとjeしますが、xlim
など。Matlabは、タスクのRメソッドよりもはるかに優れたマルチパネルプロットも処理します。一般的に、Rグラフィックは1960年代の雰囲気を持っています。公開には適していますが、データのインタラクティブな探索には最適なソリューションではありません。