2

私は現在、一連の共分散行列のオンライン推定アルゴリズムを実装していますが、数値エラーが原因で、共分散行列は常に対称ではありません。

私は現在、上の三角行列を下の三角行列にミラーリングすることでこれを解決しています。

    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* の場合、すべての単一の行列をループすると非常に遅くなります。Matlabでこれを高速化する方法はありますか?

4

1 に答える 1

5

では、NxNxT配列があり、行列の各平面は共分散行列と見なされますか?

使用するように設計されたMATLABの使用方法を学びます。明示的なループは避けてください。たとえば、これは単に上三角形と下三角形を平均します。

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

これは問題を解決するための論理的な方法であり、下の三角形を完全に捨てるよりも間違いなく優れています。また、明示的なループなしで、1行のコードで実行されます。

于 2013-03-19T19:38:44.217 に答える