Simple Kalman Filter
Typedefs | Functions
kalman_filters.h File Reference

Kalman filter implementation. More...

Go to the source code of this file.

Typedefs

typedef struct _KFilterData KFilterData
 Single Kalman filter instance internal data structure.
 
typedef KFilterDataKFilter
 Opaque reference to Kalman filter data structure.
 

Functions

KFilter Kalman_CreateFilter (size_t statesNumber, size_t measurementsNumber, size_t inputsNumber)
 Creates and initializes internal matrices of Kalman filter data structure
More...
 
void Kalman_DiscardFilter (KFilter filter)
 Deallocates internal data of given filter
More...
 
void Kalman_SetInputFactor (KFilter filter, size_t stateIndex, size_t inputIndex, double ratio)
 Defines correlation between input and state variables for prediction phase. More...
 
void Kalman_SetTransitionFactor (KFilter filter, size_t newStateIndex, size_t oldStateIndex, double ratio)
 Defines correlation between two state variables for state transition on prediction phase
More...
 
void Kalman_SetMeasureWeight (KFilter filter, size_t measureIndex, size_t stateIndex, double maxError)
 Defines impact of a measurement variable for state estimation
More...
 
void Kalman_SetMeasure (KFilter filter, size_t measureIndex, double value)
 Sets new value for a single measument. More...
 
void Kalman_SetInput (KFilter filter, size_t inputIndex, double value)
 Sets new value for a single input. More...
 
double * Kalman_Predict (KFilter filter, double *inputsList, double *result)
 Runs prediction phase on given Kalman filter
More...
 
double * Kalman_Update (KFilter filter, double *measuresList, double *result)
 Runs update phase on given Kalman filter
More...
 
void Kalman_Reset (KFilter filter)
 Resets internal filter matrices data. More...
 

Detailed Description

Kalman filter implementation.

Signal filtering and fusion utilities using Kalman algorithm Based on http://www.bzarg.com/p/how-a-kalman-filter-works-in-pictures/#mjx-eqn-kalupdatefull

Function Documentation

◆ Kalman_CreateFilter()

KFilter Kalman_CreateFilter ( size_t  statesNumber,
size_t  measurementsNumber,
size_t  inputsNumber 
)

Creates and initializes internal matrices of Kalman filter data structure

Parameters
[in]statesNumbersize (in elements) of the internal estimated state vector
[in]measurementsNumbersize (in elements) of the measurements vector
[in]inputsNumbersize (in elements) of the inputs vector
Returns
reference/pointer to allocated and initialized Kalman filter data structure

◆ Kalman_DiscardFilter()

void Kalman_DiscardFilter ( KFilter  filter)

Deallocates internal data of given filter

Parameters
[in]filterreference to filter

◆ Kalman_Predict()

double* Kalman_Predict ( KFilter  filter,
double *  inputsList,
double *  result 
)

Runs prediction phase on given Kalman filter

Parameters
[in]filterreference to filter
[in]inputsListarray of input values (NULL if not updated)
[out]resultpointer to array where predicted internal state will be copied (NULL if not required)
Returns
pointer to result array containing predicted filter state (NULL on errors)

◆ Kalman_Reset()

void Kalman_Reset ( KFilter  filter)

Resets internal filter matrices data.

Parameters
[in]filterreference to filter

◆ Kalman_SetInput()

void Kalman_SetInput ( KFilter  filter,
size_t  inputIndex,
double  value 
)

Sets new value for a single input.

Parameters
[in]filterreference to filter
[in]inputIndexindex of the input variable in the internal input vector
[in]valuenew value of the input variable

◆ Kalman_SetInputFactor()

void Kalman_SetInputFactor ( KFilter  filter,
size_t  stateIndex,
size_t  inputIndex,
double  ratio 
)

Defines correlation between input and state variables for prediction phase.

Parameters
[in]filterreference to filter
[in]stateIndexindex of the correspondent state variable in the internal state vector
[in]inputIndexindex of the input variable in the internal input vector
[in]ratiooutput/input ratio desired on prediction

◆ Kalman_SetMeasure()

void Kalman_SetMeasure ( KFilter  filter,
size_t  measureIndex,
double  value 
)

Sets new value for a single measument.

Parameters
[in]filterreference to filter
[in]measureIndexindex of the measure variable in the internal measure vector
[in]valuenew value of the measurement variable

◆ Kalman_SetMeasureWeight()

void Kalman_SetMeasureWeight ( KFilter  filter,
size_t  measureIndex,
size_t  stateIndex,
double  maxError 
)

Defines impact of a measurement variable for state estimation

Parameters
[in]filterreference to filter
[in]measureIndexindex of the measure variable in the internal measure vector
[in]stateIndexindex of the correspondent state variable in the internal state vector
[in]maxErrormaximum deviation for error modeling

◆ Kalman_SetTransitionFactor()

void Kalman_SetTransitionFactor ( KFilter  filter,
size_t  newStateIndex,
size_t  oldStateIndex,
double  ratio 
)

Defines correlation between two state variables for state transition on prediction phase

Parameters
[in]filterreference to filter
[in]newStateIndexindex (in state vector) of variable updated during predicition
[in]oldStateIndexindex (in state vector) of variable used to calculate predicition
[in]ratiooutput/input ratio desired on prediction

◆ Kalman_Update()

double* Kalman_Update ( KFilter  filter,
double *  measuresList,
double *  result 
)

Runs update phase on given Kalman filter

Parameters
[in]filterreference to filter
[in]measuresListarray of measurement values (NULL if not updated)
[out]resultpointer to array where updated internal state will be copied (NULL if not required)
Returns
pointer to result array containing updated filter state (NULL on errors)