284

私はPythonRuby 、およびGNU OctaveMATLABのどちらを学習するかを決定しようとしているいくつかのCを知っているプログラマーです。それらには多くの共通点があることは知っていますが、構文やデータ構造がどれほど似ているかは明らかではありません。上記のリンクは、構文的に類似または同一であるいくつかの例を示しています。これは言語全体に当てはまりますか?

おそらくいくつかの画像分析ライブラリを使用して、より科学的な計算を行うために一般的に言語を学ぼうとしています。

さらに、MATLAB はコストに見合う価値がありますか?

4

9 に答える 9

241

相違点の完全なリストを提供するのではなく、この問題に関する私の見解を示します。

提供された wiki ページを注意深く読むと、「Octave は両方をサポートしていますが、MATLAB は最初のものが必要です」などのような文をよく目にします。これは、Octave の開発者が Octave 構文を MATLABよりも「優れた」ものにしようとしていることを示しています。

この態度は、Octave の目的を完全に失わせます。Octave の背後にあるアイデアは、m-code を実行するためのオープン ソースの代替手段を用意することです (または、以下のコメントを参照してください) それが「より良い」ものになろうとする場合、それは異なるものになろうとするものであり、これはほとんどの人がそれを使用する理由と一致しません。私の経験では、MATLAB で開発されたものを実行しても、非常に単純で非常に短いものを除いて、一度に動作することは決してありません。最初から書き直さないでください。これがどのように優れているか、本当にわかりません...

また、Octave を学習すると、MATLAB では許可されていない、Octave で許可されている構文がたくさんあります。意味 -- 多くの場合、Octave で記述されたコードは、多数の変換を行わないと MATLAB で機能しません。逆に互換性がありません!

私は続けることができます: MathWorks には MATLAB 用の多くのツールボックスがあり、Octave には実際には同等のものがないSimulinkとその関連製品があります (はい、すべての費用を支払う必要があります。しかし、多くの場合、雇用主/学校はとにかくそれを行います。 、少なくとも存在します)、いくつかの業界標準、テスト ツール、検証ツール、要件管理システム、レポート生成、はるかに大きなコミュニティとユーザー ベースなどへの準拠が証明されています。MATLAB は単なるもっと大きなものの小さな部分。オクターブは...ただのオクターブです。

だから、私のアドバイス:

  • 学校が MATLAB の費用を負担しているかどうかを確認してください。多くの場合、彼らはそうします。
  • そうでない場合、そしてお金をかき集めることができる場合は、MATLAB を購入し、適切に使用する方法を学んでください。長い目で見れば、それはより良い決断です。
  • 本当にお金がもらえない場合は、Octave を使用しますが、 MATLAB の構文を学び、Octave のみの構文には近づかないでください。(ノートを参照してください)

この最後のポイントはなぜですか?科学では、完全に MATLAB で記述された大規模なコード ベースがよくあるためです。教授、エンジニア、学生、プロのコーダーなど、MATLAB の複雑で身の毛もよだつ詳細をすべて知っている人はたくさんいますが、Octave についてはあまり知りません。

新しい仕事に就いて、新しいオフィスの全員がスペイン語を話している場合、スペイン語を話せない/好きではないという理由だけで、全員に英語を話し始めるように要求するのはちょっと生意気です. MATLAB や Octave と同じです。

注: Octave は、(Octave の起動時に --traditional フラグを含めることにより) 「従来のモード」で実行できます。これにより、特定の Octave のみの構文が使用されるとエラーが発生します。

于 2012-08-23T04:08:55.387 に答える
84

相違点のリストへのより完全なリンクは、Octave の FAQにあります。理論的には、Matlab で実行されるすべてのコードは Octave で実行される必要があり、Octave 開発者は Matlab との非互換性をバグとして扱います。したがって、最初の質問に対する答えは、理論的にはイエスです。もちろん、すべてのソフトウェアにはバグがあり、Octave も Matlab (そうです、Matlab も) も安全ではありません。あなたはそれらを報告することができ、誰かがそれらを修正しようとします

Octave には追加の機能もあります。それらのほとんどは、特に他のプログラミング言語に慣れている場合、コードをより読みやすく、より意味のあるものにする追加の構文です。

しかし、Octave には金銭的なコストだけではありません。Octave は自由という意味でも自由です。リブレですが、ここでソフトウェアの自由について文句を言うべきではないと思います。

私は Octave でのみ画像処理を行っており、画像パッケージが私のニーズに合っていることがわかりました。しかし、あなたのものになるかはわかりません。したがって、コストに見合う価値があるかどうかに対する私の答えはノーですが、確かに他の人は同意しません.

于 2012-08-23T03:56:49.870 に答える
25

MATLAB は、何よりもまず商用製品です。したがって、MATLAB のすべての機能はそのままでほとんど機能します。すべてのコア機能は堅固であり、特別なプロジェクトに取り組んでいる場合、MATLAB にはおそらくアドオンがあり、多くのドメイン固有の .m ファイルを追加して販売できます。安くはありませんが、機能し、文句なしに仕事を成し遂げます。

Octave は常に、オープンソースであり、情報は自由になりたいというルーツを示しています。それは無料であり、あらゆる機会で無料であることを思い出させてくれます。これは、情熱を持って Windows を嫌うボランティアによって開発されました。したがって、Octave はしぶしぶ Windows 上で実行されます。MATLAB の機能と同じくらい多くの機能が存在することは、非常に驚​​くべきことです。

しかし、ここに問題があります。些細なことよりも複雑なことをしようとすると、Octave は微妙で理解しにくい方法で突然壊れます。おっと -- ターミナル ドライバの OpenGL 層のどこかでオーバーフローが発生しました。印刷できません。おっと -- Figure プロットはフォントで奇妙なことをします。幸運を祈ります。おっと -- Octave とその他のあいまいなフリー ソフトウェアとの間に隠れた依存関係があるため、コンパイルできません。それがどれであるかを理解するのは幸運です。

そして、オクターブのレスポンスがイイ!フリーソフトです!すべてのソース コードがあり、すべてのバグを自分で修正できます。無限の時間とリソースが手元にあれば、フリー ソフトウェアのバグ修正にすべての時間を費やすことができるかもしれませんが、個人的にはそうしません。私が学界で働いていたら、そうするかもしれません。

つまり、MATLAB と Octave のどちらを選択するかという問題は、本質的に 1 つの問題に帰着します。興味深いことに、商用ソフトウェアとフリー ソフトウェアのどちらを選択する場合でも、この質問は常に同じです。

質問は次のとおりです。

時間よりもお金を持っていますか?

于 2015-12-22T21:18:09.207 に答える
8

Octaveを使い始めたばかりです。また、MATLAB を使用している人々も見てきました。上記の大きな違いの 1 つは、Octave にはコマンド ライン インターフェイスがあり、MATLAB には GUI があることです。私によると、GUI を持つことはデバッグに非常に適しています。

Octave では、行列の長さなどを確認するためにコマンドを実行する必要がありますが、MATLAB では、適切なインターフェイスを使用してすべてをうまく表示します。しかし、Octave は無料で、私が行う基本的なタスクには適しています。基本的なことだけをやろうとしていると確信している場合、または今必要なものがわからない場合は、Octave を選択してください。本当に必要だと感じたときに、MATLAB の料金を支払うことができます。

于 2013-06-27T14:11:30.997 に答える
7

MATLAB が非常に人気があり特別なものになっているのは、さまざまな分野の優れたツールボックスです。あなたの主な目的は MATLAB を学ぶことなので、Octave を使っても MATLAB を使ってもまったく違いはありません!

クールなツールボックス (基本的に専攻によって異なります) なしで MATLAB を購入するだけでは、実際には合理的な費用ではありません。

Octave を使い始めて、インターネット上の MATLAB に関する膨大な量のチュートリアルに従うことは間違いありません。

于 2012-08-23T14:52:31.520 に答える
4

Rody Oldenhuis の回答に追加したいことはあまりありません。私は通常、私が書いたすべての関数を Matlab で実行するという戦略に従います。

次のユースケースのために、両方のシステムでテストしたいくつかの特定の機能:

a) Octave はライセンス サーバーを必要としません。たとえば、組織がローカル ライセンスをサポートしていない場合などです。スクリプトを使用したシステムがインターネットに接続されておらず、非常に長い時間 (ラボの隅で) 実行され、多くの異なるユーザーによって使用される状況で、一度使用しました。注意: これはライセンス コストに関するものではなく、関連する技術的な問題に関するものです。

b) Octave は、Raspberry Pi ( http://wiki.octave.org/Rasperry_Pi ) などの他のプラットフォームをサポートしています。これは便利な場合があります。

于 2016-01-16T19:12:24.123 に答える
-1

Octave と MATLAB には多くの類似点があります。しかし、Octave はコマンド ライン インターフェイスです。コマンド プロンプトで各コマンドを入力する必要がありますが、MATLAB には最適な GUI が付属しています。最初に MATLAB 学生版を使用することをお勧めします。基本的なレッスンを学んだ後、GNU Octave を永続的に使用します。

現在、GNU Octave には GUI が付属していますが、現在は開発版です。guioctave、xoctave (無料ではない)、 DomainMath IDEなど、GNU Octave 用の GUI フロント エンドがいくつかあります。

于 2012-08-23T15:50:33.210 に答える