2

我们的平台:

  • Windows、Linux、Mac OSX。

自由的:

  • 兼容 LGPL

支持高级操作:

  • 特征系统、SVD、QR、LU、逆、伪逆(又名 Moore-Penrose 逆)、...

支持许多矩阵类型以及性能良好的小型矩阵,例如 3x3:

  • 稀疏,对称,...(以及对它们的操作!,例如 pseudoInverse() )

当然应该是

  • 高效的
  • 过去几个月的积极发展

再次链接 LAPACK、MKL、ATLAS 等会很好。

真正接近的是不支持稀疏容器的犰狳。Eigen3也很棒,但不提供伪逆或支持稀疏矩阵(只是为了节省空间)。

我还看了:

  • newmat11, boost::uBlas, gsl, IT++
4

3 回答 3

4

eigen是最好的!它比 boost::ublas 好得多,您可以像在 ublas 中那样写 C = A*B 而不是 C = prod(A,B) 并且我已经测试过它的速度比 ublas 快得多。

于 2011-02-27T03:40:51.050 回答
0

Eigen3 现在有一个稀疏矩阵类,以及几个流行的稀疏矩阵库的接口。如果您需要计算伪逆来求解最小二乘系统,则可以直接在正规方程上使用Cholesky 分解。

于 2011-04-13T05:14:45.150 回答
0

NewMat11 是一个很好的、易于使用且相当轻量级的矩阵库,用于高级矩阵运算(Eigensystems、SVD、QR、LU、逆)。您可以轻松地从数组声明和构造矩阵:

Matrix M(numRows,numCols);
M << array;

访问矩阵元素为:

M.element(i,j);

转置:

M.t();

取反:

M.i();

仅乘以 *:

M*M

并且可以相当容易地执行其他操作,例如:SVD、QR、LU 等。

明确地提供伪逆(Moore-Penrose 逆)操作对于库来说不是强制性的,因为您可以使用如下的转置和逆操作轻松计算它:

如果 row > col,则伪逆(最小二乘解)可以计算为: M_PseudoInv = (M T M) -1 M T

如果 row < col 则伪逆(最小范数解)可以计算为: M_PseudoInv = M T (MM T ) -1

于 2016-06-29T15:58:59.507 回答