filter

package module
v0.0.0-...-ae99294 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 10, 2019 License: Apache-2.0 Imports: 1 Imported by: 0

README

go-estimate

GoDoc License Travis CI Go Report Card codecov

This package offers a small suite of basic filtering algorithms written in Go. It currently provides the implementations of the following filters and estimators:

In addition it provides an implementation of Rauch–Tung–Striebel smoothing for Kalman filter, which is an optimal Gaussian smoothing algorithm. There are variants for both LKF (Linear Kalman Filter) and EKF (Extended Kalman Filter) implemented in the smooth package. UKF smoothing will be implemented in the future.

Get started

Get the package:

$ go get github.com/milosgajdos83/go-estimate

Get dependencies:

$ make dep

Run unit tests:

$ make test

You can find various examples of usage in go-estimate-examples.

TODO

Contributing

YES PLEASE!

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type DiscreteModel

type DiscreteModel interface {
	// Model is a model of a dynamical system
	Model
	// StateMatrix returns state propagation matrix
	StateMatrix() mat.Matrix
	// StateCtlMatrix returns state propagation control matrix
	StateCtlMatrix() mat.Matrix
	// OutputMatrix returns observation matrix
	OutputMatrix() mat.Matrix
	// OutputCtlMatrix returns observation control matrix
	OutputCtlMatrix() mat.Matrix
}

DiscreteModel is a dynamical system whose state is driven by static propagation and observation dynamics matrices

type Estimate

type Estimate interface {
	// Val returns estimate value
	Val() mat.Vector
	// Cov returns estimate covariance
	Cov() mat.Symmetric
}

Estimate is dynamical system filter estimate

type Filter

type Filter interface {
	// Predict estimates the next internal state of the system
	Predict(mat.Vector, mat.Vector) (Estimate, error)
	// Update updates the system state based on external measurement
	Update(mat.Vector, mat.Vector, mat.Vector) (Estimate, error)
}

Filter is a dynamical system filter.

type InitCond

type InitCond interface {
	// State returns initial filter state
	State() mat.Vector
	// Cov returns initial state covariance
	Cov() mat.Symmetric
}

InitCond is initial state condition of the filter

type Model

type Model interface {
	// Propagator is system propagator
	Propagator
	// Observer is system observer
	Observer
	// Dims returns input and output dimensions of the model
	Dims() (in int, out int)
}

Model is a model of a dynamical system

type Noise

type Noise interface {
	// Mean returns noise mean
	Mean() []float64
	// Cov returns covariance matrix of the noise
	Cov() mat.Symmetric
	// Sample returns a sample of the noise
	Sample() mat.Vector
	// Reset resets the noise
	Reset()
}

Noise is dynamical system noise

type Observer

type Observer interface {
	// Observe observes external state of the system
	Observe(mat.Vector, mat.Vector, mat.Vector) (mat.Vector, error)
}

Observer observes external state (output) of the system

type Propagator

type Propagator interface {
	// Propagate propagates internal state of the system to the next step
	Propagate(mat.Vector, mat.Vector, mat.Vector) (mat.Vector, error)
}

Propagator propagates internal state of the system to the next step

type Smoother

type Smoother interface {
	// Smooth implements filter smoothing and returns new estimates
	Smooth([]Estimate, []mat.Vector) ([]Estimate, error)
}

Smoother is a filter smoother

Directories

Path Synopsis
ekf
kf
ukf
bf
rts

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL