如何解决快速高效的上对角矩阵逆
| 我在一个项目中多次计算多项式高斯密度,并按等级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中上三角矩阵的逆(代码中的“ 2”部分)。您有什么想法可以在MATLAB中更有效地做到这一点。
注意,以这种方式计算行列式也更快。因此,新方法对于行列式的计算也不错。
解决方法
mldivide函数足够聪明,可以检查三角矩阵,在这种情况下,它使用前向/后向替换方法有效地求解线性系统:
AX=B <--> X=inv(A)*B <--> X=A\\B
(计算x1,将其代入第二个方程,然后计算x2,代入第三个……)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。