Правильная настройка матрицы шумов при использовании фильтра Apache Kalman - PullRequest
0 голосов
/ 11 июня 2018

В 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.Где я ошибся?

1 Ответ

0 голосов
/ 28 июня 2018

Оказывается, что это была ошибка в предыдущей версии библиотеки фильтров Apache Kalman (org.apache.commons:commons-math3).Обновление до последней версии (3.6.1) устранило проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...