2

一个快速(也许是幼稚的)问题。考虑以下代码,其中Sig是对称 PSD 矩阵。

VectorXf c=Sig.ldlt().vectorD();
int p=Sig.cols();
MatrixXf b=MatrixXf::Identity(p,p); 
Sig.ldlt().solveInPlace(b);

Cholesky 分解Sig在这里执行了多少次?如果上面的答案不止一次,我需要 D 向量和 的逆向量Sig。在特征中获得两者的最快方法是什么(例如,没有多余的计算)?

4

1 回答 1

3

有两个cholesky 分解,每个ldlt()调用一个。该ldlt()函数返回一个LDLT对象。从那里你可以得到所有涉及 Cholesky 分解的矩阵。

LDLT<MatrixXf> chol = Sig.ldlt();
VectorXf c = chol.vectorD();
int p = Sig.cols();
MatrixXf b = MatrixXf::Identity(p, p);
b = chol.solve(b);
于 2013-06-19T21:50:30.533 回答