web-dev-qa-db-ja.com

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

簡単な操作では、組み込みハードウェアでのC実装をコミットする前に、いくつかの高級言語でアルゴリズムをプロトタイプ化する必要があります。

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

何か特別な理由がありますかnot特に、MATLABの使用を主張する外部パートナーがいる場合、互換性が損なわれますか?予想されるパフォーマンス上のペナルティはありますか?

78
lindelof

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

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

しかし、OctaveがMatlabとどのように互換性があるかに一般的に感銘を受けたと言わざるを得ません。最後に、これは2008年でしたが、2年で状況は大きく変わる可能性があります。

51
carlosdc

私の頭のてっぺんから:

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

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

オクターブに関して:オクターブ構文の類似性に非常に感銘を受けました。 MATLABスクリプトをオクターブに転送するのにそれほど時間はかかりませんでした。 Meanwihile私は、エラーバーと一緒にマーカーを印刷することに特定の問題があります。そのため、ある程度の努力で克服できるバグがまだ残っています。問題が発生した場合は、nabble mailing forum:[email protected]を試してください。ところで、私のチームは、MATLABに適応するように(ユーザーフレンドリ)適応できません。そのため、MATLABを使用しています。 MATLABはgnuplotで構築されているため、バグを修正する別の方法は、生成されたgnuplotファイルを編集することです。最高のIDE私が見つけたのはQtOctaveで、「ブログを覚えておく」で短いレビューをしたことです。

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

14
Emanuel Vianna

Octaveにはmatlabの構文がいくつか改善されています。たとえば、endifだけでなくendforendfunctionおよびendと言うことができ、デバッグがはるかに簡単になります。

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

最後に、octaveにはparcellfunpararrayfunがあります。これらは、matlabには完全に欠けている非常に強力な並列処理ツールです。 matlabにはparforがありますが、私の意見ではそれを行う最善の方法ではありません。

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

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

10
user1240280

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

9
Doresoom

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

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

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

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

  • プロトタイピングの場合、プロットは適切です。人々はMATLABのスタイルに慣れているだけです。

  • ツールボックスの相対的な不足は、ターゲットプラットフォームで使用できないため、大した問題ではありません。

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

7
Andrew Wagner

MATLABには、 MATLABとOctaveの違いのリスト が付いた優れたWikiBookがあります。

私の経験では、コアのMATLABはOctaveにうまく移植されていますが、ツールボックスにはさまざまなレベルの互換性があるため、決定はコーディングする内容によって決まります。

Octaveに欠けているものの1つは、.NETコードとGUIビルダーguide(Octaveで使用できるGUIビルドツールは他にもたくさんあります)との緊密な統合です。

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

5
Richie Cotton

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

したがって、囚人のジレンマを乗り越えることができれば、Matlabよりもオクターブを好むかもしれません。

5
SiggyF

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

他にもいくつかあります Octave FAQの制限/相違点

3
jhfrontz

余裕があれば、MatlabをOctaveよりも間違いなく好むはずです。

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

OpenOffice対MS Officeのようになると思います。ほとんどの場合互換性がありますが、頭痛の種になります。

2
Dima

線形回帰と二次計画法のアプリケーションをOctaveに移植することに成功しました。

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

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

0
Ben