Matlab 确保矩阵对称(且半正定)
我目前正在为一组协方差矩阵实施在线估计算法,由于数值错误,我的协方差矩阵在任何时候都不对称 我目前通过将上三角矩阵镜像到下三角矩阵来解决此问题:Matlab 确保矩阵对称(且半正定),matlab,matrix,covariance,Matlab,Matrix,Covariance,我目前正在为一组协方差矩阵实施在线估计算法,由于数值错误,我的协方差矩阵在任何时候都不对称 我目前通过将上三角矩阵镜像到下三角矩阵来解决此问题: for i=1:T tempSigma(:, :, i) = eye(D)/sigmaT(:,:,i); temp = triu(tempSigma(:,:,i), 1); tempSigma(:, :, i) = triu(tempSigma(:, :, i)); tempSigma(:
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中有什么方法可以加速这个过程吗?所以你有一个NXT数组,其中矩阵的每个平面都被视为协方差矩阵 学习使用MATLAB,因为它是为使用而设计的。尽量避免显式循环。例如,这将简单地平均上部和下部三角形:
tempSigma = (tempSigma + permute(tempSigma,[2 1 3]))/2;
这是一种解决问题的合乎逻辑的方法,可以说比完全抛弃较低的三角形要好。它在一行代码中运行,没有显式循环。维度有多大?速度有多慢?强制对称能保证半正定性吗?不,