2014-08-04 13:43 GMT+02:00 Gilles <[email protected]>: > 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: [email protected] > For additional commands, e-mail: [email protected] >
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: [email protected] For additional commands, e-mail: [email protected]
