【问题标题】:Ensuring Matrix is symmetric (and positive-semidefinite)确保矩阵是对称的(和半正定的)
【发布时间】:2013-03-08 16:09:57
【问题描述】:

我目前正在为一组协方差矩阵实施在线估计算法,由于数值错误,我的协方差矩阵恰好始终不对称。

我目前通过将上三角矩阵镜像到下三角矩阵来解决这个问题:

    for i=1:T
       tempSigma(:, :, i) = eye(D)/sigmaT(:,:,i);
       temp = triu(tempSigma(:,:,i), 1);
       tempSigma(:, :, i) = triu(tempSigma(:, :, i));
       tempSigma(:, :, i) = tempSigma(:, :, i) + temp';
    end

对于较大的 *T*s,循环遍历每个矩阵变得非常慢。有什么办法可以在 Matlab 中加快这个速度?

【问题讨论】:

标签: matlab matrix covariance


【解决方案1】:

所以你有一个 NxNxT 数组,其中矩阵的每个平面都被视为协方差矩阵?

学习使用 MATLAB,因为它是为使用而设计的。尽量避免显式循环。例如,这将简单地平均上下三角形:

tempSigma = (tempSigma + permute(tempSigma,[2 1 3]))/2;

这是解决问题的合乎逻辑的方法,可以说比完全扔掉下三角形更好。它在一行代码中运行,没有显式循环。

【讨论】:

    猜你喜欢
    • 2022-10-21
    • 2017-04-03
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    • 1970-01-01
    • 2013-05-30
    • 2019-02-09
    • 1970-01-01
    相关资源
    最近更新 更多