Matlab 快速高效的上对角矩阵逆

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

我在一个项目中计算了大量的密度,在这个项目中,我用秩-1更新协方差矩阵。我没有从头开始计算协方差,而是使用
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。