kalman-filter
Version:
Kalman filter (and Extended Kalman Filter) Multi-dimensional implementation in Javascript
30 lines (26 loc) • 953 B
JavaScript
const {identity} = require('simple-linalg');
/**
*Creates a dynamic model, following constant position model with respect with the dimensions provided in the observation parameters
* @param {DynamicConfig} dynamic
* @param {ObservationConfig} observation
* @returns {DynamicConfig}
*/
module.exports = function (dynamic, observation) {
let {dimension} = dynamic;
const observationDimension = observation.dimension;
const {observedProjection} = observation;
const {stateProjection} = observation;
let {covariance} = dynamic;
if (!dynamic.dimension) {
if (observationDimension) {
dimension = observationDimension;
} else if (observedProjection) {
dimension = observedProjection[0].length;
} else if (stateProjection) {
dimension = stateProjection[0].length;
}
}
const transition = identity(dimension);
covariance = covariance || identity(dimension);
return Object.assign({}, dynamic, {dimension, transition, covariance});
};