В KalmanFilter.java из кода фильтра Apache Kalman я обнаружил эту строку, которую не могу объяснить:
} else if (measNoise.getRowDimension() != this.measurementMatrix.getRowDimension() || measNoise.getColumnDimension() != 1) {
throw new MatrixDimensionMismatchException(measNoise.getRowDimension(), measNoise.getColumnDimension(), this.measurementMatrix.getRowDimension(), 1);
}
Очевидно, что шум измерения должен быть матрицей N x 1
, а матрица измерений должна быть N x ?
Таблица размеров Однако я также нашел:
RealMatrix s = this.measurementMatrix.multiply(this.errorCovariance).multiply(this.measurementMatrixT).add(this.measurementModel.getMeasurementNoise());
Таким образом, часть this.measurementMatrix.multiply(this.errorCovariance).multiply(this.measurementMatrixT)
приведет к матрице N x N
, которую нельзя добавить в матрицу N x 1
.Где я ошибся?