UNPKG

kalman-filter

Version:

Kalman filter (and Extended Kalman Filter) Multi-dimensional implementation in Javascript

45 lines (38 loc) 1.41 kB
/** *Verifies that dimensions are matching and set dynamic.dimension and observation.dimension * with respect of stateProjection and transition dimensions *@param {ObservationConfig} observation *@param {DynamicConfig} dynamic *@returns {ObservationConfig, DynamicConfig} */ module.exports = function ({observation, dynamic}) { const {stateProjection} = observation; const {transition} = dynamic; const dynamicDimension = dynamic.dimension; const observationDimension = observation.dimension; if (dynamicDimension && observationDimension && Array.isArray(stateProjection) && (dynamicDimension !== stateProjection[0].length || observationDimension !== stateProjection.length)) { throw (new TypeError('stateProjection dimensions not matching with observation and dynamic dimensions')); } if (dynamicDimension && Array.isArray(transition) && dynamicDimension !== transition.length) { throw (new TypeError('transition dimension not matching with dynamic dimension')); } if (Array.isArray(stateProjection)) { return { observation: Object.assign({}, observation, { dimension: stateProjection.length, }), dynamic: Object.assign({}, dynamic, { dimension: stateProjection[0].length, }), }; } if (Array.isArray(transition)) { return { observation, dynamic: Object.assign({}, dynamic, { dimension: transition.length, }), }; } return {observation, dynamic}; };