// the measurement covariance matrix -> put the "real" variance
RealMatrix R = new Array2DRowRealMatrix(new double[] { measurementNoise * measurementNoise });
final ProcessModel pm = new DefaultProcessModel(A, B, Q, x0, P0);
final MeasurementModel mm = new DefaultMeasurementModel(H, R);
final KalmanFilter filter = new KalmanFilter(pm, mm);
final List<Number> xAxis = new ArrayList<Number>();
final List<Number> realVoltageSeries = new ArrayList<Number>();
final List<Number> measuredVoltageSeries = new ArrayList<Number>();
final List<Number> kalmanVoltageSeries = new ArrayList<Number>();
final List<Number> covSeries = new ArrayList<Number>();
for (int i = 0; i < 300; i++) {
xAxis.add(i);
voltMeter.step();
realVoltageSeries.add(voltMeter.getVoltage());
// get the measured voltage from the volt meter
final double measuredVoltage = voltMeter.getMeasuredVoltage();
measuredVoltageSeries.add(measuredVoltage);
kalmanVoltageSeries.add(filter.getStateEstimation()[0]);
covSeries.add(filter.getErrorCovariance()[0][0]);
filter.predict();
filter.correct(new double[] { measuredVoltage });
}
chart1.setYAxisTitle("Voltage");
chart1.setXAxisTitle("Iteration");