私はPython、Ruby、そしてGNU OctaveとMatlabのどちらを学ぶかを決めようとしているCを知っているプログラマーです。私はそれらが多くの 共通点 を持っていることを知っていますが、構文がどれほど似ているか、あるいはデータ構造が似ているかは私には明らかではありません。誰もが「似ている」と言っていますが、実際に似ていると言う人はいません。上記のリンクは、それらが構文的に類似または同一である例をいくつか示していますが、これは言語全体に当てはまりますか?
もっと科学的な計算をするために、一般的に言語を習得しようとしています。おそらく、いくつかの画像解析ライブラリを使用します。私がプログラムできる言語は他にもたくさんあることを私は知っていますが、私のアドバイザーはMATLABやOctaveを知ることが科学において非常に重要であると言います。
さらに、Matlabはコストに見合う価値がありますか?私はあまりお金を持っていませんが、図書館や他の場所で重要な違いがあれば、私はお金を見つけることができると確信しています。
相違点の完全なリストを提供するのではなく、この問題についての見解をお伝えします。
提供するwikiページを注意深く読むと、 "Octaveは両方をサポートしますが、MATLABは最初のものを必要とします"などの文章をよく見るでしょう。これは、Octaveの開発者がOctave構文MATLABよりも優れている ""。
このような態度でOctaveはその目的を完全に失います。 Octaveの背後にある考え方は、(またはがになっている、私が言うべき、下記のコメントを参照)mコードを実行する代わりのオープンソースを持つことです。それが "より良く"なるようにしようとするならば、したがってそれはdifferentにしようとします、そしてそれはほとんどの人がそれを使う理由と一致しません。私の経験では、MATLABで開発されたものを実行することは、非常に単純で短いものを除いて、一度ではうまくいきません - かなりの関数にとって、Octaveでうまくいく前に、たくさんのものを翻訳しなければなりません。一から書き直さないでください。これはbetterです、本当にわかりません...
また、Octaveを学んでいれば、Octaveで許可されていてMATLABで許可されていない多くの構文があります。意味 - Octaveで書かれたコードは、多くの変換がなければMATLABでうまくいかないことがよくあります。他の方法では互換性がありません!
MathWorksにはMATLAB用のツールボックスが多数あり、Simulinkとその関連製品にはOctaveにはまったく同等のものがありません(そう、すべてのことにお金を払う必要があるでしょう)。それに、少なくともexists)、いくつかの業界標準、テストツール、検証ツール、要求管理システム、レポート作成、はるかに大きなコミュニティとユーザーの順守が証明されていますMATLABなどははるかに大きいもののほんの一部です。オクターブは・・・ただオクターブです。
だから、私のアドバイス:
なぜこれが最後のポイントですか?科学の分野では、MATLABで完全に記述された大規模なコードベースがしばしばあります。 MATLABの複雑で複雑な詳細をすべて知っている教授、エンジニア、学生、プロのコーダー、多くの人々がいますが、Octaveについてはそれほど多くはありません。
あなたが新しい仕事に就いたときに、あなたの新しいオフィスの誰もがスペイン語を話すのであれば、youスペイン語を話さないでください。 MATLABとOctaveでも同じです。
NB - すべてのダウン投票者が自分の意見や意見が分からない理由でコメントを残すことができれば、それは素晴らしいことです:)
注:Octaveは、(Octaveの起動時に--traditionalフラグを含めることによって)「トラディショナルモード」で実行することができます。これにより、Octaveのみの特定の構文が使用されているときにエラーが発生します。
違いの一覧へのより完全なリンクは OctaveのFAQ にあります。理論的には、Matlabで動作するすべてのコードはOctaveおよびOctave開発者で動作するはずです。Matlabとの非互換性はバグとして扱われます。それであなたの最初の質問に対する答えは理論的にはイエスです。もちろん、すべてのソフトウェアにはバグがあり、OctaveもMatlabも(はい、Matlabも)それらから安全ではありません。あなたはそれらを報告することができ、誰かがそれらを修正しようとします
Octaveには 追加機能 もあります。それらのほとんどは私の意見ではコードをより読みやすく、より意味のあるものにするための特別な構文です。プログラミングの熱狂者。
しかし、Octaveには単なる金銭上のコスト以上のものがあります。 Octaveは自由という意味でも無料です、それは寛大ですが、私はこれがソフトウェアの自由について批判する場所ではないと思います。
私はOctaveだけで画像処理をします、そして、imageパッケージが私の必要性に合っているとわかります。しかし、私はあなたのものがどうなるかわかりません。それで、それがコストに見合うだけの価値があるかどうかについての私の答えは、確かに他の人は同意しないでしょう。
MATLABは、まず第一に、商用製品です。したがって、MATLABのすべての機能はそのまま使用できます。コア機能はすべてしっかりしており、特別なプロジェクトで作業している場合、MATLABにはおそらく追加のドメイン固有の.mファイルを追加するアドオンがあります。それは安くはありませんが、それは動作し、それは苦情なしに仕事を終わらせるでしょう。
Octaveは常にそのオープンソースの、情報が欲しいという根拠を示しています。それは無料です、そしてそれはそれがあらゆる機会で無料であることをあなたに思い出させるでしょう。それは情熱を持ってWindowsを嫌うボランティアによって開発されました。そのためOctaveはWindows上で辛辣に動作します。驚くほど多くのMATLAB機能が存在することは驚くべきことです。
しかし、これがこすりです。ちょっと複雑なこと以上のことをしようとするときはいつでも、Octaveは突然微妙でわかりにくい方法で中断します。 Oops - 端末ドライバはOpenGLレイヤのどこかでオーバーフローを起こしました。印刷できません。 Oops - Figureプロットはそれらのフォントで奇妙なことをします。その理由を考え出して頑張ってください。 Oops - Octaveとその他のあいまいなフリーソフトウェアの間には隠れた依存関係があるため、コンパイルできません。幸運はそれがどれなのかを考え出すことです。
そしてオクターブの反応はちょっといいです!フリーソフトウェアです。あなたはすべてのソースコードを持っています、あなたはあなた自身でそれらすべてのバグを修正することができます!無限の時間とリソースが私の手に渡っていれば、フリーソフトウェアのバグを修正するために私はずっと時間を費やすことができるかもしれませんが、私は個人的にはしません。私が学界で働いていたなら、私はそうするかもしれません。
したがって、根本的には、MATLABとOctaveのどちらを選択するかの問題は、1つの問題に帰着します。興味深いことに、この質問は、商用ソフトウェアとフリーソフトウェアのどちらを選択する場合でも常に同じです。
そして問題は、
時間以上のお金がありますか。
Octaveは基本的にMATLABのオープンソース版です。それだけで書かれています。 MATLABにはとても使い勝手の良いNice GUIがありますが、OCTAVEの次の安定版リリースにはGUI版もあるでしょう。これは私が不安定版リリースでテストしたもので、素晴らしく見えます。 Octaveは、MATLABの開発に業界から何百万ドルもの資金を提供しているボランティアのグループによって開発および保守されているため、はるかにバグが多いです。私はまだ学生で、学生版のMATLABを使用していますが、GUI付きの安定版がリリースされたら、Octaveに行くことを考えています。
MATLABはおそらくOctaveよりもはるかに強力であり、アルゴリズムはより高速に実行されますが、ほとんどのアプリケーションでは、Octaveは十分すぎるほどであり、私の考えでは、Octaveは完全に無料です。
あなたは学術版を使用することができますが私はMATLABを使用すると言うでしょうが、Octaveへの切り替えはそれらが全く同じ構文を使用するのでシームレスであるべきです。
最後に、SIMULINKの問題があります。シミュレーションや制御システム設計を行いたい場合(おそらく他にも100万の用途があります)、SIMULINKは素晴らしく、MATLABに付属しています。 Scilabは明らかに「良い」オープンソースの代替手段ではありますが、私はそれを試したことはありません。
平和。
Octaveを使い始めました。そして私は人々がMatlabを使っているのを見ました。そして上記のような大きな違いの1つは、Octaveにはコマンドラインインターフェイスがあり、MatlabにはGUIがあることです。私によると、GUIを持っていることはデバッグに非常に良いです。 Ocatveでは、行列の長さなどを確認するためにコマンドを実行する必要がありますが、Matlabでは、適切なインターフェイスを使用してすべてをうまく表示します。しかし、Octaveは無料で、私が行う基本的なタスクには適しています。基本的なことだけをやろうとしているのか、今すぐに必要なものがわからないのなら、Octaveに行ってください。あなたが本当に必要を感じたとき、あなたはMatlabの代金を払うことができます。
そのことがMatlabをとても人気があり特別なものにしているのは、さまざまな分野の優れたツールボックスです。あなたの主な目標はMatlabを学ぶことなので、OctaveとMatlabのどちらを使っても違いはありません。
クールなツールボックスを使わずにMatlabを購入して購入するだけで(それは基本的には専攻に依存します)、実際には妥当な費用ではありません。
あなたは間違いなくOctaveを使って良いスタートを切ることができ、そしてインターネット上のMatlabのたくさんのチュートリアルに従うことができます。
私がRody Oldenhuisの回答に追加したいことはあまりありません。私は通常、私が書くすべての関数がMatlabで実行されるという戦略に従います。
次のユースケースでは、両方のシステムでテストした特定の機能がいくつかあります。
a)オクターブはライセンスサーバーを必要としません。あなたの教育機関がローカルライセンスをサポートしていない場合スクリプトを使用していたシステムがインターネットに接続できず、非常に長い間(ラボの隅で)実行され、さまざまなユーザーによって使用されていた状況で、これを1回使用しました。備考:それはライセンス費用に関するものではなく、関連する技術的問題に関するものです。
b)Octaveは他のプラットフォームをサポートしています、例えばRasberry Pi( http://wiki.octave.org/Rasperry_Pi ) - これは役に立つかもしれません。
入れ子になった関数とクロージャは、MATLABを含む多くの言語でサポートされています。 JavaScriptはファーストクラスの設計原則としてクロージャを推進しています。
残念ながら、Octaveはクロージャー(字句スコープを持つ入れ子関数)をサポートしていません。
http://osdir.com/ml/octave-bug-tracker/2013-06/msg00210.html によると開発者はそれを正しくすることを望んでいないか、できません。
これは両方の方法で多くのコードを壊します。回避策はありません。
Octaveとmatlabには多くの類似点があります。しかしOctaveはコマンドラインインターフェースです。 matlabには最高のGUIが付属していますが、コマンドプロンプトに各コマンドを入力する必要があります。最初にmatlabの学生版を使用することをお勧めします。基本的なレッスンを学んだ後は、gnu octave permentalyを使ってください。今gnu octaveにはguiが付属していますが、現在は開発版です。 guioctave、xoctave(無料ではない)、DomainMath IDEなどのような、gnu octave用のguiフロントエンドがいくつかあります。