根据http://arma.sourceforge.net/docs.html#part_c,犰狳支持以下功能:
eig_sym
eig_gen
eigs_sym
eigs_gen
svd
svd_econ
但是似乎没有像" svds_econ"这样的功能,它在"稀疏"矩阵并返回奇异值和向量。
有没有办法在Armadillo中实现这项功能?
答案 0 :(得分:5)
从版本5.0开始,Armadillo具有svds()函数,用于获取有限数量的奇异值和奇异向量。
答案 1 :(得分:1)
可以间接计算稀疏SVD。例如,首先计算 X' * X 或 X * X' ,然后将结果矩阵传递给eigs_sym()。另一种方法是首先构造一个稀疏矩阵,如 [zeros(m,m)X; X'零(n,n)] ,其中 m 和 n 表示 X 中的行数和列数。
您可能还希望事先按照1-norm缩放 X ,以提高稳定性。