Matlab 快速高效的上对角矩阵逆
我在一个项目中计算了大量的密度,在这个项目中,我用秩-1更新协方差矩阵。我没有从头开始计算协方差,而是使用Matlab 快速高效的上对角矩阵逆,matlab,matrix,covariance,gaussian,matrix-inverse,Matlab,Matrix,Covariance,Gaussian,Matrix Inverse,我在一个项目中计算了大量的密度,在这个项目中,我用秩-1更新协方差矩阵。我没有从头开始计算协方差,而是使用cholupdate函数向协方差中添加一个新样本,并删除协方差中的一个新样本。通过这种方式,更新被告知是在$O(n^2)$中,而不是协方差矩阵的$O(n^3)$Cholesky分解中 persistent R if (initialize) % or isempty(R) % compute covariance V R = chol(V); else R = cho
cholupdate
函数向协方差中添加一个新样本,并删除协方差中的一个新样本。通过这种方式,更新被告知是在$O(n^2)$中,而不是协方差矩阵的$O(n^3)$Cholesky分解中
persistent R
if (initialize) % or isempty(R)
% compute covariance V
R = chol(V);
else
R = cholupdate(R,xAdded);
detVar = prod(diag(R))^2;
Rt = R';
coeff = 1/sqrt((2*pi)^dimension*detVar);
y = Rt\x;
logp = log(coeff) - 1/2 * norm(y)^2;
实际上代码相当复杂,但我在这里简化了它。我想知道是否有一种更快的方法可以在MATLAB中计算上三角矩阵的逆(代码中的Rt\x
部分)。你有什么想法可以在MATLAB中更有效地实现它吗
注意,用这种方法计算行列式也更快。因此,新方法对行列式的计算也不坏。函数是检查三角矩阵,在这种情况下,它使用一种方法来有效地求解线性系统:
AX=B <--> X=inv(A)*B <--> X=A\B
AX=bx=inv(A)*bx=A\B
(计算x1,在第二个方程中代入,计算x2,在第三个方程中代入…如果有任何一种语言可以进行有效的矩阵运算,那就是Matlab。