Thanks for the comments!
@1 & 2: I do not know about a general decision if algo classes should be serializable, but I thought it makes sense in this case. The serialization method was derived from SimplexTableau and the corresponding description in MathUtils. As the different matrix object can also be set from external, they may not all be Array2DRowRealMatrix, but I do not know if this makes a difference for the serialization.
@3: ack, the member variables have been adjusted already, but the constructor has to be cleaned up
@4: the constant voltage example (from the paper of Welch & Bishop) is the basis for the test case, but I was really unsure which reasonable test criteria to use for algorithm validation. The very naive approach I currently use is to basically test if the estimated state has less diff to the real value than the artificially imposed measurement/process noise and whether the error covariance converges to some value (although this is not complete yet).
After some reflection, maybe it makes more sense to split the internal data of the Kalman filter into two parts:
- elements that model the process to be estimated (transition matrix, measurement matrix, control matrix, initial state)
- elements that define how the filter tries to estimate the state (mainly the noise covariance matrizen)
The constructor would then look something like this:
KalmanFilter(FilterProcessModel model, RealMatrix measurementNoiseCov, RealMatrix processNoiseCov)
The FilterProcessModel would be serializable, while the KalmanFilter is not.