@bencevans/kalman-filter
Version:
61 lines (46 loc) • 1.29 kB
text/typescript
import * as test from "tape";
import KalmanFilter, { KalmanFilterArray } from ".";
test("single run", t => {
const filter = new KalmanFilter({
initialEstimate: 0,
initialErrorInEstimate: 1
});
const [estimate, errorInEstimate] = filter.update({
measurement: 20,
errorInMeasurement: 0
});
t.equal(estimate, 20);
t.equal(errorInEstimate, 0);
t.end();
});
test("multi run", t => {
const filter = new KalmanFilter({
initialEstimate: 68,
initialErrorInEstimate: 2
});
let [estimate, errorInEstimate] = filter.update({
measurement: 75,
errorInMeasurement: 4
});
t.equal(estimate.toFixed(2), "70.33");
t.equal(errorInEstimate.toFixed(2), "1.33");
[estimate, errorInEstimate] = filter.update({
measurement: 71,
errorInMeasurement: 4
});
t.equal(estimate.toFixed(2), "70.50");
t.equal(errorInEstimate.toFixed(2), "1.00");
[estimate, errorInEstimate] = filter.update({
measurement: 70,
errorInMeasurement: 4
});
t.equal(estimate.toFixed(2), "70.40");
t.equal(errorInEstimate.toFixed(2), "0.80");
[estimate, errorInEstimate] = filter.update({
measurement: 74,
errorInMeasurement: 4
});
t.equal(estimate.toFixed(2), "71.00");
t.equal(errorInEstimate.toFixed(2), "0.67");
t.end();
});