kalman-filter
Version:
Kalman filter (and Extended Kalman Filter) Multi-dimensional implementation in Javascript
51 lines (43 loc) • 1.54 kB
JavaScript
const registeredObservationModels = {};
const registeredDynamicModels = {};
module.exports = {
/**
* Enables to register observation model and store it
* @param {String} name
* @callback fn the function corresponding to the desired model
*/
registerObservation(name, fn) {
registeredObservationModels[name] = fn;
},
/**
* Enables to register dynamic model and store it
* @param {String} name
* @callback fn the function corresponding to the desired model
*/
registerDynamic(name, fn) {
registeredDynamicModels[name] = fn;
},
/**
* Build a model given an observation configuration
* @param {ObservationConfig} observation
* @returns {ObservationConfig} the configuration with respect to the model
*/
buildObservation(observation) {
if (typeof (registeredObservationModels[observation.name]) !== 'function') {
throw (new TypeError(`The provided observation model name (${observation.name}) is not registered`));
}
return registeredObservationModels[observation.name](observation);
},
/**
* Build a model given dynamic and observation configurations
* @param {DynamicConfig} dynamic
* @param {ObservationConfig} observation
* @returns {DynamicConfig} the dynamic configuration with respect to the model
*/
buildDynamic(dynamic, observation) {
if (typeof (registeredDynamicModels[dynamic.name]) !== 'function') {
throw (new TypeError(`The provided dynamic model (${dynamic.name}) name is not registered`));
}
return registeredDynamicModels[dynamic.name](dynamic, observation);
},
};