UNPKG

@bencevans/kalman-filter

Version:
49 lines 2.19 kB
"use strict"; exports.__esModule = true; var KalmanFilter = /** @class */ (function () { function KalmanFilter(_a) { var initialEstimate = _a.initialEstimate, initialErrorInEstimate = _a.initialErrorInEstimate; this.previousEstimate = initialEstimate; this.previousErrorInEstimate = initialErrorInEstimate; } KalmanFilter.prototype.update = function (_a) { var measurement = _a.measurement, errorInMeasurement = _a.errorInMeasurement; var kalmanGain = this.previousErrorInEstimate / (this.previousErrorInEstimate + errorInMeasurement); var currentEstimate = this.previousEstimate + kalmanGain * (measurement - this.previousEstimate); var currentErrorInEstimate = (1 - kalmanGain) * this.previousErrorInEstimate; this.previousEstimate = currentEstimate; this.previousErrorInEstimate = currentErrorInEstimate; return [currentEstimate, currentErrorInEstimate]; }; return KalmanFilter; }()); exports["default"] = KalmanFilter; var KalmanFilterArray = /** @class */ (function () { function KalmanFilterArray(_a) { var initialEstimate = _a.initialEstimate, initialErrorInEstimate = _a.initialErrorInEstimate; this.filters = initialEstimate.map(function (initialEstimate) { return new KalmanFilter({ initialEstimate: initialEstimate, initialErrorInEstimate: initialErrorInEstimate }); }); } KalmanFilterArray.prototype.update = function (_a) { var measurement = _a.measurement, errorInMeasurement = _a.errorInMeasurement; var errorInEstimate; var estimates = this.filters.map(function (filter, index) { var _a = filter.update({ measurement: measurement[index], errorInMeasurement: errorInMeasurement }), estimate = _a[0], _errorInEstimate = _a[1]; errorInEstimate = _errorInEstimate; return estimate; }); return [estimates, errorInEstimate]; }; return KalmanFilterArray; }()); exports.KalmanFilterArray = KalmanFilterArray; //# sourceMappingURL=index.js.map