dav*_*hab 2 matlab matrix covariance
我目前正在为一组协方差矩阵实现在线估计算法,并且由于数值误差,我的协方差矩阵在任何时候都不是对称的.
我目前通过将上三角矩阵镜像到下一个矩阵来解决这个问题:
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
Run Code Online (Sandbox Code Playgroud)
对于大*T*s,在每个单个矩阵上循环变得非常慢.有没有办法在Matlab中加快速度?
小智 5
所以你有一个NxNxT数组,矩阵的每个平面都被认为是一个协方差矩阵?
学习如何使用MATLAB.尽量避免显式循环.例如,这将简单地平均上下三角形:
tempSigma = (tempSigma + permute(tempSigma,[2 1 3]))/2;
Run Code Online (Sandbox Code Playgroud)
这是一个解决问题的合理方法,可以说比完全丢弃下三角更好.它运行在一行代码中,没有显式循环.