私たちのシューストリング操作では、組み込みハードウェアでのC実装にコミットする前に、いくつかの高級言語でアルゴリズムのプロトタイプを作成する必要があります。
これまでMATLABを使用してこれを行ってきましたが、ライセンスコストが低下し始めています。MATLABコードをOctaveに移植することを検討しています。
いずれかの特定の理由があるではないことを行うには?特にMATLABの使用を主張する外部パートナーがいる場合、互換性が失われますか?期待できるパフォーマンスペナルティはありますか?
私たちのシューストリング操作では、組み込みハードウェアでのC実装にコミットする前に、いくつかの高級言語でアルゴリズムのプロトタイプを作成する必要があります。
これまでMATLABを使用してこれを行ってきましたが、ライセンスコストが低下し始めています。MATLABコードをOctaveに移植することを検討しています。
いずれかの特定の理由があるではないことを行うには?特にMATLABの使用を主張する外部パートナーがいる場合、互換性が失われますか?期待できるパフォーマンスペナルティはありますか?
回答:
2008年に私は同じことをしようとしました。私はすぐに次のショーストッパーに気づきました:
しかし、私は一般的に、OctaveがMatlabとどれほど互換性があるかに感銘を受けたと言わざるを得ません。Matlabの使用が基本であれば、幸運になるかもしれません。最後に、これは2008年でしたが、2年で状況は大きく変わる可能性があります。
頭のてっぺんから:
私はオクターブと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を試してみます。
Octaveは、たとえば、あなたが言うことができ、MATLAB上のいくつかの構文の改善を持っているendif
endfor
と、endfunction
ちょうどの代わりに、end
より簡単にデバッグを行いいます。
Octaveを使用すると、関数を動的に生成したり、スクリプトや関数ファイルで複数の関数を定義したりすることもできます。これは、matlabの1ファイル1関数のアプローチよりもはるかに優れています。
最後に、オクターブにはparcellfun
、pararrayfun
matlabには完全に欠けている非常に強力な並列処理ツールがあります。parfor
matlabにありますが、私の意見ではそれを行う最良の方法ではありません。
オクターブの短所は、ツールボックスではわずかに遅れていることですが、見れば似たようなものを見つけることができます。fsolve
そしてlsode
、いくつかの理由のためにオクターブで、少し遅いようですが、より堅牢な。また、一部の人々にとって大きな悩みの種は、シンボリックリンクとDAQツールボックスの欠如である傾向がありますが、それはとにかく独占的なものになるでしょう。
Python / Numpyは間違いなく一周する価値があります。より強力ですが、構文はより複雑なコードを対象としています。
failed to open pipe: pipe: not supported on this system
。ビルド済みのWindowsバイナリを使用していますOctave_3.6.1_VS2010
。
octave --force-gui
Octaveにはがないためguide
、GUIの構築が非常に簡単になります。同僚を使用してMATLAB以外のツールを作成するためのガイドを定期的に使用しています。
ユースケースでは、オクターブはMATLABよりも優れている場合があります。
これには、Cに少し近いコードを記述できる構文があります。つまり、+ =、-=、デフォルトの関数パラメーター値、二重引用符で囲まれた文字列リテラルなどです。
チップがデスクトッププロセッサよりも遅いと仮定すると、速度はおそらく問題になりません。
matlabよりもはるかに高速に起動するため、テスト用のシェルスクリプトに統合する方が実用的です。
プロトタイピングの場合、プロットは十分すぎるほどです。人々はMATLABのスタイルに慣れています。
ツールボックスが比較的不足していることは、ターゲットプラットフォームでは使用できないため、大した問題ではありません。
私は両方を使用していますが、切り替えるたびに、もう一方の機能が失われます。
オープンソースの代替案が統計ではどのように機能するかを見るのは興味深いですが、数値分析では機能しません。R(統計のオクターブ)は、今日、商用のS-plus(統計のMATLAB)よりもはるかに人気があります。他の回答で見つかったmatlabから切り替えない理由として言及された問題は、Rにも当てはまりました。しかし、それでも誰もが貢献し始めたばかりで、今ではRが標準であり、より優れたグラフィック、より優れたパッケージ、ベンダーロックインがありません。
したがって、囚人のジレンマを乗り越えることができれば、matlabよりもオクターブを好む可能性があります。
MATLABとOctaveの違いのリストが記載されたMATLABに関する優れたウィキブックスがあります。
私の経験では、コアMATLABはOctaveに適切に移植されていますが、ツールボックスにはさまざまなレベルの互換性があるため、正確に何をコーディングしようとしているかによって決定が異なります。
Octaveに欠けているもののいくつか、AFAIKは、.NETコードおよびGUIビルダーとの緊密な統合guide
です(Octaveが使用できる他の多くのGUI構築ツールがありますが)。
また、他の人が指摘しているように、MATLABで支払うものの多くは、洗練されたインターフェイスとデバッグ/プロファイリングツールです。経験豊富なコーダーはおそらく代替手段で管理できますが、初心者は苦労するかもしれません。
Octaveは、Matlabには存在しない言語構造(たとえば、自動インクリメント演算子、do-untilステートメントなど)をサポートしていることに注意してください。これにより、Octaveで開発されたコード(Matlabの制限に精通していない人によって)をMatlab環境に移植するのが面倒になることがあります。
Octave FAQには、他にもいくつかの制限/違いがあります。