什么库以最快的速度计算矩阵的等级?或者,是否有公开的代码可以相当快地完成?
我正在使用Eigen3,它似乎比Python的numpy rank函数慢。我只需要这个功能快速,绝对没有其他问题。如果你建议包装,但这是无关紧要的,包括易用性。
我所看到的矩阵的大小往往是n乘(n选3),条目是1或0 ....大多数是0' s。
感谢。
编辑1 :排名超过R。
答案 0 :(得分:1)
一般来说,BLAS/LAPACK功能非常快。 This link建议使用GESVD
或GESDD
函数来计算奇异值。非零奇异值的数量将是矩阵的等级。
LAPACK是what numpy uses。
简而言之,您可以使用相同的LAPACK库调用。除非稀疏性和特殊结构允许更有效的方法,否则将难以超越BLAS / LAPACK功能。如果这是真的,您可能想要检查实现稀疏SVD求解器的替代库。
另请注意,有多个BLAS / LAPACK实现。
This post似乎认为LU分解对于计算等级是不可靠的。最好做SVD。在经历使用BLAS / LAPACK(我从未使用过本征)的所有麻烦之前,你可能想看看特征调用的速度有多快。