私たちのわずかな操作では、組み込みハードウェアでの 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
and を使用すると、デバッグがはるかに簡単になります。endfunction
end
Octave では、関数を動的に生成したり、スクリプトや関数ファイルで複数の関数を定義したりすることもできます。これは、matlab の 1 ファイル 1 関数アプローチよりも優れています。
最後に、オクターブにはparcellfun
、pararrayfun
matlab に完全に欠けている非常に強力な並列処理ツールである と があります。in matlabがありますが、parfor
それは私の意見では最善の方法ではありません。
オクターブの短所は、ツールボックスでわずかに遅れていることですが、よく見ると似たようなものを見つけることができます。fsolve
少し遅くlsode
見えますが、何らかの理由でオクターブでより堅牢です。また、シンボリック リンクと DAQ ツールボックスの欠如が一部の人々にとって大きな不満になる傾向がありますが、いずれにせよ、そのようなものはプロプライエタリになります。
Python/Numpy は間違いなく試してみる価値があります。より強力ですが、その構文はより複雑なコードを対象としています。
Octave には がないためguide
、GUI の構築が非常に簡単になります。私は、MATLAB を使用していない同僚のためにツールを作成するためのガイドを定期的に使用しています。
あなたのユース ケースでは、オクターブが MATLAB よりも優れている可能性があります。
C に少し近いコードを記述できる構文があります。つまり、+=、-=、デフォルトの関数パラメーター値、二重引用符で囲まれた文字列リテラルなど...
チップがデスクトップ プロセッサよりも遅いと仮定すると、速度は問題にならない可能性があります。
matlab よりもはるかに高速に起動するため、テスト用にシェル スクリプトに統合する方が実用的です。
プロトタイピングの場合、プロットは十分すぎるほどです。人々は MATLAB のスタイルに慣れているだけです。
ツールボックスの相対的な不足は、いずれにせよターゲット プラットフォームで利用できないため、大した問題ではありません。
私は両方を使用していますが、切り替えるたびに、もう一方の機能が恋しくなります。
オープンソースの代替手段が統計では機能するが、数値分析では機能しないことを確認するのは興味深いことです。R (統計のオクターブ) は、現在、商用の S-plus (統計の matlab) よりも人気があります。他の回答で見つかった matlab から切り替えない理由として言及されている問題は、R にも当てはまります。
したがって、囚人のジレンマを乗り越えることができれば、matlab よりもオクターブを好むこともできます。
MATLAB と Octave の違いのリストを含む、MATLAB に関する優れた WikiBook があります。
私の経験では、コア MATLAB は Octave にうまく移植されていますが、ツールボックスにはさまざまなレベルの互換性があるため、何をコーディングしようとしているかによって決定が異なります。
私の知る限り、Octave に欠けているものは、.NET コードと GUI ビルダーとの緊密な統合ですguide
(ただし、Octave が使用できる GUI 構築ツールは他にもたくさんあります)。
また、他の人が指摘しているように、MATLAB で支払うものの多くは、洗練されたインターフェイスとデバッグ/プロファイリング ツールです。経験豊富なコーダーはおそらく別の方法で対処できますが、初心者は苦労するかもしれません.
Octave は、Matlab には存在しない言語構造をサポートしていることに注意してください (たとえば、自動インクリメント演算子、do-until ステートメントなど)。これにより、(Matlab の制限に精通していない人が) Octave で開発したコードを Matlab 環境に移植するのが面倒になることがあります。
Octave FAQ には、他にもいくつかの制限/相違点があります。
余裕があれば、Octave よりも Matlab を選ぶべきです。
Octave の使用経験はあまりありませんが、コードで Matlab ツールボックス、ファンシー プロット、または Matlab GUI を使用している場合、問題が発生することが予想されます。
OpenOffice 対 MS Office のようなものになると思います。ほとんど互換性がありますが、頭痛の種になるだけの違いがあります。