Details

Type: Improvement

Status: Closed

Priority: Minor

Resolution: Fixed

Affects Version/s: 3.3

Fix Version/s: 3.4

Labels:
Description
In the class KalmanFilter in the function correct(RealMatrix) the gain matrix currently is calculated via first calculating the inverse of the residual covariance matrix s. I think it would be more effective to calculate the gain by directly solving the linear system with an QR or Cholesky decomposition.
For example like this (maybe replace "Cholesky" by "QR"):
// calculate gain matrix
// K(k) = P(k) * H' * (H * P(k) * H' + R)^1
// K(k) = P(k) * H' * S^1
// K(k) * S = P(k) * H'
// S' * K(k)' = H * P(k)'
RealMatrix kalmanGain = new CholeskyDecomposition(s).getSolver().solve(measurementMatrix.multiply(errorCovariance.transpose())).transpose();