21


16

エレガントで効率的なC ++マトリックスライブラリを探しています

あいさつ、その主題のグーグルは、例えば、http://osl.iu.edu/research/mtl/ [MTL]、http://exmat.sourceforge.net/ [exmat]、http://www.netlibをもたらします。 org / lapack / [LAPACK]およびhttps://stackoverflow.com/questions/1997632/matrix-standard-library [こちら]。 また、Microsoft Researchがリリースしたことを覚えているようですが、手に入れることはできません。 C ++内でMatlabのエクスペリエンスを(可能な限り)達成したいと考え、実際にそれらの1つを使用(または開発…​)した人からのアドバイスを探します。 事前に感謝、ロビ

8 Answer


15


Armadilloをご覧ください。ドキュメントには、Matlabユーザー向けのhttp://arma.sourceforge.net/docs.html#syntax[syntax変換表]があり、 Webサイトの他のC ++マトリックスライブラリ。 とても使いやすいと思います。


8


私はhttp://eigen.tuxfamily.org [Eigen]とMatlabの両方を使用していますが、どちらもとても気に入っています。 Eigenは、追加のパフォーマンスのためにSIMDおよび遅延評価をサポートしています。 しかし、ユーザーは内部を気にする必要はありません。 Eigenのインターフェースは非常にシンプルで直感的です。 MatlabからEigenへの移行は比較的簡単なはずです。これはuBLASやLAPACKについては言えません。

編集:http://eigen.tuxfamily.org/dox-devel/AsciiQuickReference.txt[Matlabユーザー向けのEigenクイックリファレンス]


6


boostには、行列代数が可能な数学ライブラリがあります-http://www.boost.org/doc/libs/1_43_0/libs/numeric/ublas/doc/index.htm[uBLAS]。


1


Boostエコシステムには、http://nt2.sourceforge.net/publication.html [NT2]とhttp://www.revergestudios.com/boost-la/[Boost LA]の2つの新しい線形代数ライブラリがあります。 Boost uBlasとの互換性を保つために、進行中の作業(途中でさえ完了しましたか?)。


1


NISTにはhttp://math.nist.gov/tnt/download.html[TNT](テンプレート数値ツールキット)があります。 非常に軽量でシンプル。


1


半真面目な答え(Stroustrupからのストレート):http://www.stroustrup.com/Programming/Matrix/index.html


0


www.embedded.comでJack Crenshawの記事を読んでください。 彼は何年もの間、マトリックスクラスを作成してきましたが、それとともに使用して使用する数値メソッドコードを開発しています。


0


Gmm++ライブラリの使用を開始しました。 これはヘッダーファイルのみであり、スパース行列をサポートし、ソルバーの幅広い配列とLAPACKおよびBLASのインターフェイスを備えています。 そのインターフェースはEigenほど優れていないと思われますが、より完全です。