OctaveよりもMATLABを好む理由/時期


82

私たちのシューストリング操作では、組み込みハードウェアでのC実装にコミットする前に、いくつかの高級言語でアルゴリズムのプロトタイプを作成する必要があります。

これまでMATLABを使用してこれを行ってきましたが、ライセンスコストが低下し始めています。MATLABコードをOctaveに移植することを検討しています。

いずれかの特定の理由があるではないことを行うには?特にMATLABの使用を主張する外部パートナーがいる場合、互換性が失われますか?期待できるパフォーマンスペナルティはありますか?


7
移行とトレーニングのコストを考慮する必要があります。
ダニエルモウラ

10
なぜPythonではないのですか?stackoverflow.com/questions/1776290/…MATLAB ユーザー向けのNumPy:mathesaurus.sourceforge.net/matlab-numpy.html
Mikhail

5
@Mikhail:Matlabを使用するパートナーとのインターフェースのため。
Jonas

2
@Jonas:外部のパートナーも納得するかもしれません...みんながPythonへの移行について話しているのを見たら...
Mikhail

回答:


52

2008年に私は同じことをしようとしました。私はすぐに次のショーストッパーに気づきました:

  • ツールボックスはそれほど完全ではなく、十分にテストされていません。特に私の仕事が大きく依存していた画像処理ツールボックス(大きなショーストッパーは、imtransformが実装されていないことでした)。
  • Octaveデバッガーとプロファイラーは、Matlabのものと比較して原始的でした。
  • 他の人と一緒に仕事をしていると、彼らを変えるのは非常に難しいかもしれません。
  • サードパーティのツールボックスを使用している場合は、自分でツールボックスを機能させることができます。
  • Octaveのプロットは出版品質ではありません。

しかし、私は一般的に、OctaveがMatlabとどれほど互換性があるかに感銘を受けたと言わざるを得ません。Matlabの使用が基本であれば、幸運になるかもしれません。最後に、これは2008年でしたが、2年で状況は大きく変わる可能性があります。


8
この問題はMATLABユーザーとは何の関係もないと思います。FOSSの代替手段があり、そのような取り組みに取り組みたい人々がそうすることは素晴らしいことです。人々は自分がやりたいことは何でも自分の時間でやり遂げます。特定のプログラムのユーザーを批判するのは幼稚です。
carlosdc 2013

2
興味のある方は、Octave 3.8 Windowsインストーラーのリンクをたどってください:mxeoctave.osuv.de
juliohm

2
これらの問題は、bountysource.com / teams / gnu-octave / issues Webサイトを通じて、1つのMatlabライセンスの10分の1のコストで克服できます。
セルゲイ

2
2017年の時点で、実際に試してみる必要があります。すべてではないにしても、ほとんどのMATLABスクリプトが(特定のツールボックスを除いて)すぐに実行されることに驚かれることでしょう。ある午後、いくつかの小さな非互換性を修正する必要があります。ライセンスフリーのオープンソースソフトウェアで開発することの利益と比較して、ある午後は何ですか?
Hugo Raguet 2017

24

頭のてっぺんから:

  1. 2学期前に機械学習コースで宿題をしようとしたときに発見したように、Octaveにはないツールボックスがたくさんあります。
  2. Octaveのデバッガーははるかに劣っています。一緒に仕事をすることはほとんど不可能でした。
  3. Matlabは、多くの種類の操作ではるかに高速です。
  4. Matlabのプロットははるかに優れています。
  5. OctaveにはネイティブGUIがありません。Octave用のGUIはありますが、MatlabのネイティブGUIより劣っています。

ポイント#5は+1。インストールでき、確実に機能するOctave用の無料のGUIはもちろん、優れたGUIも見つかりませんでした。SciLabはMatlabの良い代替手段かもしれませんが、ポイント#1〜4に関してどれほど優れているかはわかりません。
ステファンスミス

15

私はオクターブとRもテストしました。

オクターブについて:オクターブ構文の類似性に非常に感銘を受けました。MATLABスクリプトをオクターブに転送するのにそれほど時間はかかりませんでした。Meanwihileエラーバーと一緒にマーカーを印刷する際に特に問題があります。これは、nabbleでJarno Rajahalmeによって修正され、xtickフォントサイズを変更しました。これは、nabbleでの質問の回答で得られた回避策です。そのため、まだいくつかのバグがあり、ある程度の努力で克服することができます。いくつかの問題が発生した場合は、nabbleメールフォーラム(help-octave@octave.org)を試してみてください。ちなみに、私のチームは、MATLABに適応するなど、それに適応する(ユーザーフレンドリー)ことができないため、引き続きMATLABを使用しています。MATLABはgnuplotの下に構築されているため、バグを修正する別の方法は、生成されたgnuplotファイルを編集することです。私が見つけた最高のIDEはQtOctaveで、「

Rに関して: SciViewsの調査によると、RのパフォーマンスはMATLABやoctaveよりも優れています。私はRの経験があまりありません。私はmclustパッケージを研究して、RでのEMクラスタリングに関するウィキブックスの章を書きました。ちなみに、彼らは非常に活発なコミュニティを持っているようです。そのため、IMOがそれほど標準化されていない、提案に対するサードパーティのパッケージが見つかる場合があります。私が見つけた最高のIDEは、Eclipse、JGR(Java GUI for R)、およびemacs用のStatETプラグインでした。新しいプログラミング言語を学ぶための時間コストにもかかわらず、実験用グラフィックスとデータマイニング分析を作成するためにオープンソースプラットフォームを選択する場合は、Rを試してみます。


10

Octaveは、たとえば、あなたが言うことができ、MATLAB上のいくつかの構文の改善を持っているendif endforと、endfunctionちょうどの代わりに、endより簡単にデバッグを行いいます。

Octaveを使用すると、関数を動的に生成したり、スクリプトや関数ファイルで複数の関数を定義したりすることもできます。これは、matlabの1ファイル1関数のアプローチよりもはるかに優れています。

最後に、オクターブにはparcellfunpararrayfunmatlabには完全に欠けている非常に強力な並列処理ツールがあります。parformatlabにありますが、私の意見ではそれを行う最良の方法ではありません。

オクターブの短所は、ツールボックスではわずかに遅れていることですが、見れば似たようなものを見つけることができます。fsolveそしてlsode、いくつかの理由のためにオクターブで、少し遅いようですが、より堅牢な。また、一部の人々にとって大きな悩みの種は、シンボリックリンクとDAQツールボックスの欠如である傾向がありますが、それはとにかく独占的なものになるでしょう。

Python / Numpyは間違いなく一周する価値があります。より強力ですが、構文はより複雑なコードを対象としています。


1
私はそれを試しましたが、私が知る限り、pararrayfun / parcellfunはWindowsではサポートされていません(Cygwinなしではネイティブではありません)failed to open pipe: pipe: not supported on this system。ビルド済みのWindowsバイナリを使用していますOctave_3.6.1_VS2010
アムロ2012年

2
そうですね、pararrayfun / parcelfunはいくつかの子プロセスを生成することで機能するため、WindowsとLinuxでのシェルスクリプトの実行方法の違いによると思います。これがWindowsでどのように機能するかわかりません。Windowsバイナリがシェルで実行されているのか、それともエミュレートされているのかさえわかりません。
user1240280 2012

1
残念ながら、cellfun / arrayfuncの(ポータブル)並列バージョンは良い考えのようです...多分MATLABもそうすべきです:)
Amro 2012

@ user1240280:スクリプト内で関数を定義できることは、Matlabに対するOctaveの大きな利点です。プログラム全体をモジュール方式で記述し、1つのファイルに保存できるため、自分や他の人に簡単に送信できます。しかし、OctaveのGUIの欠如は大きな欠点です。
ステファンスミス

@stefan smith:OctaveにはネイティブGUIがあり、まだ実験的ですが、最近の経験から、非常に使いやすく、多かれ少なかれ安定しています。あなたはそれを試すことができますoctave --force-gui
Legionair 2015年

9

Octaveにはがないためguide、GUIの構築が非常に簡単になります。同僚を使用してMATLAB以外のツールを作成するためのガイドを定期的に使用しています。


6
Octaveには同等のガイドがありますか?それが私が反対票を投じた理由ですか?
doresoom 2010

8

ユースケースでは、オクターブはMATLABよりも優れている場合があります。

  • これには、Cに少し近いコードを記述できる構文があります。つまり、+ =、-=、デフォルトの関数パラメーター値、二重引用符で囲まれた文字列リテラルなどです。

  • チップがデスクトッププロセッサよりも遅いと仮定すると、速度はおそらく問題になりません。

  • matlabよりもはるかに高速に起動するため、テスト用のシェルスクリプトに統合する方が実用的です。

  • プロトタイピングの場合、プロットは十分すぎるほどです。人々はMATLABのスタイルに慣れています。

  • ツールボックスが比較的不足していることは、ターゲットプラットフォームでは使用できないため、大した問題ではありません。

私は両方を使用していますが、切り替えるたびに、もう一方の機能が失われます。


6

オープンソースの代替案が統計ではどのように機能するかを見るのは興味深いですが、数値分析では機能しません。R(統計のオクターブ)は、今日、商用のS-plus(統計のMATLAB)よりもはるかに人気があります。他の回答で見つかったmatlabから切り替えない理由として言及された問題は、Rにも当てはまりました。しかし、それでも誰もが貢献し始めたばかりで、今ではRが標準であり、より優れたグラフィック、より優れたパッケージ、ベンダーロックインがありません。

したがって、囚人のジレンマを乗り越えることができれば、matlabよりもオクターブを好む可能性があります。


4
あなたはこれを答えではなくコメントに入れるべきでした。
ディマ2010

5

MATLABとOctaveの違いのリストが記載されたMATLABに関する優れたウィキブックスがあります。

私の経験では、コアMATLABはOctaveに適切に移植されていますが、ツールボックスにはさまざまなレベルの互換性があるため、正確に何をコーディングしようとしているかによって決定が異なります。

Octaveに欠けているもののいくつか、AFAIKは、.NETコードおよびGUIビルダーとの緊密な統合guideです(Octaveが使用できる他の多くのGUI構築ツールがありますが)。

また、他の人が指摘しているように、MATLABで支払うものの多くは、洗練されたインターフェイスとデバッグ/プロファイリングツールです。経験豊富なコーダーはおそらく代替手段で管理できますが、初心者は苦労するかもしれません。


3

Octaveは、Matlabには存在しない言語構造(たとえば、自動インクリメント演算子、do-untilステートメントなど)をサポートしていることに注意してください。これにより、Octaveで開発されたコード(Matlabの制限に精通していない人によって)をMatlab環境に移植するのが面倒になることがあります。

Octave FAQには、他にもいくつかの制限/違いがあります。


2

余裕があれば、OctaveよりもMatlabを絶対に好むべきです。

Octaveの使用経験はあまりありませんが、コードでMatlabツールボックス、ファンシープロット、またはMatlabGUIを使用している場合は問題が発生する可能性があります。

OpenOfficeとMSOfficeのようになると思います。ほとんど互換性がありますが、頭痛の種になるほど異なります。


0

いくつかの線形回帰および二次計画法アプリケーションをOctaveに正常に移植しました。

線形回帰(バックスラッシュ演算子)は、調整なしで機能しました。二次計画法の場合、fmincon()からsqp()切り替える必要があり、同様の結果が得られました。

それでも、OctaveのツールボックスとGUIは、過去2年間で急速に進歩しているものの、実際には成熟度が低くなっています(私は基本的なことに多くの時間を費やしました)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.