我们的平台:
免:
支持高级别操作:
支持许多矩阵类型以及性能良好的小矩阵,例如3×3:
当然应该是
再次链接LAPACK,MKL,ATLAS等会很高兴。
真正接近的是Armadillo,它不支持稀疏容器。 Eigen3也很棒,但不提供伪逆或支持稀疏矩阵(仅用于保存位置)。
我也看了看:
答案 0 :(得分:4)
eigen是最好的!它比boost :: ublas好得多,你可以用ublas编写C = A * B而不是C = prod(A,B),我测试的速度比ublas快得多。
答案 1 :(得分:0)
Eigen3现在有一个稀疏矩阵类,以及几个流行的稀疏矩阵库的接口。如果需要计算伪逆以求解最小二乘系统,则可以直接在正规方程上使用Cholesky decomposition。
答案 2 :(得分:0)
NewMat11是一款优秀,易于使用的产品。用于高级矩阵运算的相当轻量级的矩阵库(Eigensystems,SVD,QR,LU,inverse)。你可以很容易地声明和从数组构造一个矩阵:
Matrix M(numRows,numCols);
M << array;
访问矩阵元素:
M.element(i,j);
采取转置:
M.t();
反过来:
M.i();
仅与*:
相乘M*M
可以很容易地执行其他操作,如:SVD,QR,LU等。
显式地提供伪逆(Moore-Penrose逆)操作对于库不是强制性的,因为您可以通过使用转置和放大器来轻松地计算它。逆操作如下:
如果行&gt; col,那么伪逆(最小二乘解)可以计算为: M_PseudoInv =(M T M) -1 M T
如果行&lt;然后,伪逆(最小范数解)可以计算为: M_PseudoInv = M T (MM T ) -1