kfilter 0.4.0

A no-std implementation of the Kalman and Extended Kalman Filter.
Documentation

# Kfilter
A no-std  implementation of the [Kalman](https://en.wikipedia.org/wiki/Kalman_filter)
and [Extended Kalman Filter](https://en.wikipedia.org/wiki/Extended_Kalman_filter).

See the [documentation](https://docs.rs/kfilter) and [examples](https://github.com/dw-labs-org/kfilter/tree/main/examples) for usage.

See this [blog post](https://domwil.co.uk/posts/kalman/) to understand why the library looks the way it does.

## Features
- Systems for modelling state transition / prediction
  - Linear or Non-linear
  - With and without inputs
- Measurements for modelling sensors / observations
  - Linear or Non-linear
- Single measurement Kalman filter (Kalman1M) or multi-measurment / multi-rate (Kalman)

## Quickstart
The example below is a position and velocity 2 state Kalman filter with position measurements.

```rust
use kfilter::{Kalman1M, KalmanPredict};
use nalgebra::{Matrix1, Matrix1x2, Matrix2, SMatrix};

// Create a new 2 state kalman filter
let mut k = Kalman1M::new(
    Matrix2::new(1.0, 0.1, 0.0, 1.0),   // F
    SMatrix::identity(),                // Q
    Matrix1x2::new(1.0, 0.0),           // H
    SMatrix::identity(),                // R
    SMatrix::zeros(),                   // x
);
// Run 100 timesteps
for i in 0..100 {
    // predict based on system model
    k.predict();
    // update based on new measurement
    k.update(Matrix1::new(i as f64));
}
```