2012-02-08 1 views
14

Matlabでは、マトリックス、DSP、統計、画像解析機能に依存するアルゴリズムを試作しています。 2Dと3DでMatlabからC++への移植に使用する数値ライブラリはどれですか?

  • 固有ベクトル
  • 畳み込み
  • FFT
  • 短時間フーリエ
  • ヒルベルト
  • チェビシェフ多項式
  • を変換するトランスフォーム:

    私が必要とするかもしれないもののいくつかの例

  • ローパスフィルタ
  • ランダムな多変量ガウス番号
  • 関数kmeansその後、私はC++でこれらのアルゴリズムを実装する必要がありますに

私はC++で数値レシピのライセンスを取得していますが、これはよく書かれており、さまざまなアルゴリズムを備えているためです。 MEXでNR関数をラップするのに役立つクラスも見つかりました:nr3matlab.h。 このクラスを使用すると、MatlabからNR関数を呼び出すことができるラッパーを生成できるはずです。これは私にとって非常に重要なので、MatlabからC++に移植する際に各ステップを確認できます。 Cでの数値のレシピを持っ++ただし、いくつかの重要な欠点:

  • シンプルに実装されたアルゴリズム、および必然的に非常に効率的ではない
  • が、私はそれゆえ、他の数値計算ライブラリを使用して検討しています

スレッドではない 方法。 理想的なライブラリべきである:

  • として適用範囲と機能性が広いことが可能
  • 十分に文書化され
  • (持っている商用サポート)
  • がすでに行われている
  • 非常に堅牢Matlabのラッパー
  • 非常に効率的
  • スレッド
  • (数値計算ライブラリー(図書館)は、あなたが示唆している「スイッチ」)

を代わりにCPUの上 を回すことができるGPUの実装を持っていますか?

お返事ありがとうございます!

+2

あなたが探しているいくつかの特定の関数/アルゴリズムをリストしてください、今この質問はあまりにも曖昧です。 –

+0

ありがとうございます。心に浮かんだものを列挙した。 – Andy

+0

ちょうど私が[scicomp.SE]の良い家を見つけるこのような質問は、将来の参考に言及したいと思った。 –

答えて

3

実際にはopenCVをご覧ください。

最初の目標はコンピュータビジョン/画像処理ですが、このライブラリには多くの線形代数ツールがあります(ほとんどすべてのことが求められます)。最初は、このライブラリはインテルによって実装されており、パフォーマンスに重点を置いています。それは、マルチスレッド、IPPを処理することができます... 構文は、通常のC + +ライブラリよりもむしろ使いやすいです。

このcheat sheetをご覧ください。構文はバージョン2.0からmimic matlabに変更されました。 このライブラリは広く使用されており、活発です(2011年8月の最新アップデート)。

+0

私はEigenの代わりにOpenCVを提案したことに驚いています。 – CroCo

3

NAGは良い選択肢です。金融機関の負荷は、数学ライブラリでそれを使用します。私が最後に使ったときにGPUの実装をしてはいけません。

+0

ありがとうございます。非常に良い見えます。 1つの開発者ライセンスのコストはどれくらいですか? – Andy

+0

@ Andreas Werner Paulsen - Googleがこれを見つけました。 http://www.eduserv.org.uk/lns/agreements/nag/nag-pricing。それがどれくらいあなたを助けるかわからない。教育機関はウェブサイトから見て、優遇価格を取得します。 – DumbCoder

4

あなたはかなり長いリストを持っており、すべてを単一のライブラリでカバーするのは難しいかもしれません。

一般的なMatlabからC++への移行では、線形代数を中心としたテンプレートのC++ライブラリであることを強くお勧めします。Matlabに類似した表現を簡単に書くことに集中しています。それは非常に優れたパフォーマンスとして、非常によく文書化され、積極的に維持されています。あなたはそこから始めて欠けている部分をあなたの仕事のために埋めることができます。

+0

ありがとうございます。また、非常に良い見えます。私は特にLapackの上に構築されていて、はるかに簡単でMatlabのようなインターフェースを証明しているのが好きです。 – Andy

+0

インターフェイスであるBLASの上にあります。したがって、デフォルトのLAPACKの代わりに、より高速なBLASをいつでもドロップすることができます。そしてコンラッドは彼のものを知っていて、一緒に仕事をすることは楽しいことです。 –

2

また、固有ライブラリ:http://eigen.tuxfamily.org がありますが、ほとんどの場合、より大きなフレームワークの一部として使用されます。それは基本的な(そして少し複雑な)代数を提供します

+0

これはC++のテンプレート作成には適していますが、コンパイルは遅く、エラーメッセージはひどく長くなります(ひどい*と*長い)。 – denis

関連する問題