commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Arne Schwarz <schwarz.a...@gmail.com>
Subject Re: [math] Calculating gain matrix in KalmanFilter
Date Mon, 04 Aug 2014 13:34:12 GMT
2014-08-04 13:43 GMT+02:00 Gilles <gilles@harfang.homelinux.org>:
> On Sun, 3 Aug 2014 18:18:24 +0200, Arne Schwarz wrote:
>>
>> Hi,
>>
>> I saw that to calculate the gain matrix the actual inverse of the
>> residual covariance matrix is calculated. Wouldn't it be faster to use
>> for example a Cholesky decomposition to solve the linear system? Since
>> a covariance matrix is always symmetric and at least positive
>> semi-definite.
>
>
> Reading the code (in class "MatrixUtils"), it looks like QR decomposition
> is used; any problem with that choice?
>
> Regards,
> Gilles
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
> For additional commands, e-mail: user-help@commons.apache.org
>

What I meant was these lines in class "KalmanFilter":

363        // invert S
364        RealMatrix invertedS = MatrixUtils.inverse(s);
365
366        // Inn = z(k) - H * xHat(k)-
367        RealVector innovation =
z.subtract(measurementMatrix.operate(stateEstimation));
368
369        // calculate gain matrix
370        // K(k) = P(k)- * H' * (H * P(k)- * H' + R)^-1
371        // K(k) = P(k)- * H' * S^-1
372        RealMatrix kalmanGain =
errorCovariance.multiply(measurementMatrixT).multiply(invertedS);

I thought it would be better to directly solve the system an not
calculate the inverse separately, but I may be wrong.

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org


Mime
View raw message