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