OctaveとMATLABの違いは?[閉まっている]


272

私はPython、Ruby、およびGNU OctaveとMatlabのどちらを学ぶかを決定しようとしているCを知っているプログラマーです。それらには多くの共通点があることは知っていますが、構文がどの程度類似しているか、データ構造がどれほど類似しているかは、はっきりしません。誰もが彼らが「似ている」と言っていますが、実際にどれほど似ているかはだれも言っていません。上記のリンクは、構文的に類似または同一のいくつかの例を示していますが、これは言語全体に当てはまりますか?

私は、おそらくいくつかの画像分析ライブラリを使用して、より科学的な計算を行うために一般的に言語を学習しようとしています。他にもプログラミング可能な言語はたくさんあることは知っていますが、アドバイザーは、MATLABまたはOctaveを知ることは科学において非常に重要であると言っています。

さらに、Matlabはコストに見合う価値がありますか?お金はあまりありませんが、図書館などで重要な違いがあれば、きっとお金が見つかるはずです。


8
あなたは学生なので、あなたの学校がmatlabを無料/安価で学生に提供しているかどうかを確認する価値があります。私の学部と大学院の両方がそれを行っているので、MATLABを選択するのがやや簡単になります。
Dougal 2012

23
はい、しかし、彼が大学を出て、いくつかの研究センターに行くとき、彼はそれを購入する必要があり、それまでにMatlabだけを知っていて、代替案を知りません。ですから、長期的に考えて、科学のキャリアを作りたいと思っているのなら、それを無視するべきではありません。言うまでもなく、このようなライセンスは通常、クラスターにも使用できません。
carandraug

2
あなたが学生である間、約100ドル(USD)のMATLABライセンスを取得できるはずです。他のツールボックスが必要な場合は、ツールボックスごとに29米ドル追加されます。したがって、どのツールボックスが必要/必要かもしれないかわからないため、コストを正当化するのは困難です。
ベンA.

23
+1私は現在、Octaveの学習を始めたばかりです。現在、機械学習を勉強していて、先生はOctaveの学習を推奨しています(METLABは高価であり、学生は機械アルゴリズムを動作させることで生産性が大幅に向上するためです)。最初にOctaveまたはMETLABのいずれかを使用し、次に機能するようになったら、JavaまたはC ++に切り替えます)
Anthony

7
python +
opencv

回答:


235

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

あなたは慎重にあなたが提供するwikiページを読めば、「Octaveは両方をサポートしてMATLABが最初に必要としながら、」のようなOctaveの開発者はオクターブ構文を作ってみることなど、このショーには、多くの場合、文章が表示されます「優れた」 MATLABのへ。

この態度はOctaveにその目的を完全に失わせます。オクターブの背後にある考え方はある(またはなってきた Mコードを実行するためのオープンソースの代替を持っているために、私は以下のコメントを参照、言うべき)を。それが「より良く」なるようにしようとすると、それは異なるようにしようとしますが、これはほとんどの人がそれを使用する理由と一致していません。私の経験では、MATLABで開発されたものを実行することは、非常に単純で本当に短いものを除いて、一度に機能することはありません-かなりのサイズの関数の場合、Octaveで機能する前に、常に多くのものを変換する必要があります最初から書き直さないでください。これがどのように良いか、私は本当にわかりません...

また、Octaveを学ぶ場合、Octaveで使用できる多くの構文があり、MATLABでは使用できません。意味-Octaveで記述されたコードは、多くの変換を行わないとMATLABで機能しないことがよくあります。逆の場合も互換性はありません!

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

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

  • 学校がMATLABに支払うかどうかを調べます。しばしばそうします。
  • そうでない場合、そしてあなたが一緒にお金をこすることができるならば、MATLABを購入して、それを適切に使用することを学んでください。長期的には、それがより良い決断です。
  • 本当にお金が手に入らない場合は、Octaveを使用してください。ただし MATLABの構文を学び、Octaveのみの構文は避けてください。(ノートを参照してください)

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

新しい仕事に就いて、新しいオフィスの全員がスペイン語を話す場合、スペイン語を話せない、または好きではないという理由だけで、それ以降、すべての人に英語を話すよう要求するのはちょっとお粗末です。MATLABとOctaveでも同じです。

注意 -すべての反対投票者が自分の主張と私に反対する理由をコメントに残すことができれば、それは素晴らしいことです:)

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


25
JITの欠如については、Octaveの開発バージョンにすでに実装されています。それがいつリリースされるかはわかりませんが、私はそれをビルドしました。ループコードの場合、その違いは非常に大きくなります。Octaveのみの構文から離れるために、Octaveの--traditionalオプションがあります。Matlabコードは常にOctaveで実行されると言っているわけではありませんが、これはリリースごとにはるかに良くなり、互換性はその優先事項の1つです(言うまでもなく、Matlabのバージョンが違っても、それらの間には十分な非互換性があります)。
carandraug

14
そして、あなたが呼ぶものは優れた構文にこだわっています... Matlabを変更する自由があり、構文を追加したり、別の関数を追加したりするのではないでしょうか。これらはユーザーが実装した機能であり、互換性を損なうことはありません。多くの場合、そうではないので、新しいものはそれを理由に拒否されます。その考え方は、Matlab言語はOctave言語のサブセットであるということです。アイデアがすばらしいと思うなら、コミュニティプロジェクトであり、コミュニティが開発するのに煩わしい機能を備えているので、参加する必要があります。
carandraug

19
@RodyOldenhuisクローンではありません。オクターブの開発はそれだけで、より多くのそれのためのパッチを提出し続けるユーザーがその方向に押し込まれてしまった、そのように起動しなかったsciencedirect.com/science/article/pii/S0959152412000911を
carandraug

9
プログラミングツールのメーカーがバグの責任を負ったことはありますか?
Martin Beckett

6
@carandraug:ああ、それで地獄へ。正しさは、それよりも重要です:)
Rody Oldenhuis 14

79

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

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

しかし、オクターブには金銭的なコストだけではありません。オクターブは自由という意味でも無料ですが、それは自由ですが、ソフトウェアの自由について怒鳴るべき場所だとは思いません。

Octaveでのみ画像処理を行ったところ、画像パッケージが自分のニーズに合っていることがわかりました。でも、どうなるかわかりません。だから、それだけの価値があるかどうかについての私の答えはノーですが、確かに他の人は反対するでしょう。


23

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

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

しかし、ここで問題があります。ささいな複雑さ以上のことをしようとするときはいつでも、Octaveは突然、微妙で理解しにくい方法で中断します。おっと-ターミナルドライバーは、OpenGLレイヤーのどこかでオーバーフローが発生しました。印刷できません。おっと-Figureプロットは、フォントを使用して奇妙なことを行います。理由を考えて頑張ってください。おっと-Octaveと他のいくつかのあいまいなフリーソフトウェアの間にいくつかの隠れた依存関係があるため、コンパイルできません。それが何であるかを理解する幸運。

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

したがって、基本的に、MATLABとOctaveのどちらを選択するかという問題は、1つの問題に帰着します。興味深いことに、商用ソフトウェアと無料ソフトウェアのどちらを選択するかという問題は、常に同じです。

そして問題は:

時間よりお金が多いですか?


2
もう一つの質問は、あなたが最終的に働く可能性のある企業は何を使うのですか?おそらく同じ理由でMatlab。
user276648 2017

14

Octaveは基本的に、MATLABのオープンソースバージョンです。それだけで書かれました。MATLABのGUIはとても使いやすく、少し使いやすくなっていますが、OCTAVEの次の安定版リリースにもGUIがあります。これは、私が不安定リリースでテストしたもので、見た目は素晴らしいです。Octaveはボランティアグループによって開発および保守されているため、バグが多く、MATLABの開発には数百万ドルが業界から資金提供されています。私はまだ学生であり、学生版のMATLABを使用していますが、GUIを備えた安定版がリリースされたら、Octaveに移行することを考えています。

MATLABはおそらくOctaveよりもはるかに強力であり、アルゴリズムはより高速に実行されますが、ほとんどのアプリケーションにとってOctaveは十分以上であり、私の意見では、完全に無料で、Octaveが完全に無料である素晴らしいツールです。

アカデミックバージョンを使用しながら、MATLABを使用することになりますが、Octaveへの切り替えは、まったく同じ構文を使用するためシームレスである必要があります。

最後に、SIMULINKの問題があります。シミュレーションや制御システムの設計をしたい場合(おそらく他に100万の用途があります)、SIMULINKは素晴らしい機能であり、MATLABに付属しています。他の人がこれに近づくことはないと思いますが、Scilabは明らかに「優れた」オープンソースの代替手段ですが、私は試していません。

平和。


「...これは、MATLABの開発に業界が数百万ドルの資金を提供しているボランティアのグループによって開発および保守されているためです。」プロジェクトの金額は、品質とバグのない因果関係ではありません。それらはおそらく相関関係でもありません。
ガガリン

「まったく同じ構文を使用します」いいえ、使用しません。
クリスLuengo

8

Octaveを使い始めました。そして、私は人々がMatlabを使用するのを見ました。上記の大きな違いの1つは、Octaveにコマンドラインインターフェイスがあり、MatlabにGUIがあることです。私によると、GUIはデバッグに非常に適しています。Ocatveでは、行列の長さなどを確認するためにコマンドを実行する必要がありますが、Matlabでは、優れたインターフェイスを使用してすべてをうまく表示します。しかし、Octaveは無料で、私が行う基本的な作業には適しています。基本的なことだけをするつもりであるか、今何が必要かわからない場合は、Octaveを使用してください。あなたが本当に必要を感じたとき、あなたはMatlabの代金を払うことができます。


2
Octaveには現在ベータ版のGUIがあります。オクターブを実行するときは、コマンド--force-guiを使用します。
ig343 2014

6
... Octaveバージョン4以降、GUIがデフォルトのUIです。
Ruslan

7

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

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

Octaveで間違いなく良いスタートを切ることができ、インターネット上のMatlabにある数多くのチュートリアルに従ってください。


4

ロディ・オルデンフイスの答えに付け加えたいことはあまりありません。私は通常、作成するすべての関数をMatlabで実行するという戦略に従います。

次の使用例について、両方のシステムでテストする特定の機能:

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

b)Octaveは他のプラットフォーム、例えばRasberry Pi(http://wiki.octave.org/Rasperry_Pi)をサポートしています -便利かもしれません。


3

ネストされた関数とクロージャーは、MATLABを含む多くの言語でサポートされるようになりました。JavaScriptは、ファーストクラスの設計原則としてクロージャーを促進します。

悲しいことに、Octaveはクロージャー(字句スコープを持つネストされた関数)をサポートしていません。

http://osdir.com/ml/octave-bug-tracker/2013-06/msg00210.htmlによれば、開発者が望んでいない、または正しく理解できないという印象を受けることさえあるかもしれません。

これにより、両方の方法で多くのコードが破損します。回避策はありません。


これがもう正確かどうかはわかりません。入れ子関数はOctaveに実装されており、Matlabよりも用途が広いことがわかりました。たとえば、スクリプト内で関数(ラムダ以外)を宣言できるようになりました。これは、前回Matlabで試したときは不可能でした。
MayeulC 2018年

@MayeulC より用途の広い部分は、実際には両方の道を切り開きます。
Wolfgang Kuehn

0

Octaveとmatlabには多くの類似点があります。しかし、Octaveはコマンドラインインターフェイスです。コマンドプロンプトで各コマンドを入力する必要がありますが、MATLABには最高のGUIが付属しています。まず、MATLAB学生版を使用することをお勧めします。基本的なレッスンを学んだ後は、gnuオクターブパーメンタリーを使用します。今GNUオクターブはGUIが付属していますが、現在は開発バージョンです。guioctave、xoctave(not free)、DomainMath IDEなど、GNUオクターブのGUIフロントエンドがいくつかあります。


2
オクターブの開発バージョン(3.7.5になる予定)にはネイティブGUIが付属しています。
kjetil b halvorsen 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.