Simple Kalman Filter
kalman_filters.h
Go to the documentation of this file.
1 // //
3 // Copyright (c) 2016-2025 Leonardo Consoni <leonardojc@protonmail.com> //
4 // //
5 // This file is part of Simple Kalman Filter. //
6 // //
7 // Simple Kalman Filter is free software: you can redistribute it and/or modify //
8 // it under the terms of the GNU Lesser General Public License as published //
9 // by the Free Software Foundation, either version 3 of the License, or //
10 // (at your option) any later version. //
11 // //
12 // Simple Kalman Filter is distributed in the hope that it will be useful, //
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of //
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
15 // GNU Lesser General Public License for more details. //
16 // //
17 // You should have received a copy of the GNU Lesser General Public License //
18 // along with Simple Kalman Filter. If not, see <http://www.gnu.org/licenses/>. //
19 // //
21 
22 
28 
29 #ifndef KALMAN_FILTERS_H
30 #define KALMAN_FILTERS_H
31 
32 
34 typedef struct _KFilterData KFilterData;
37 
38 
44 KFilter Kalman_CreateFilter( size_t statesNumber, size_t measurementsNumber, size_t inputsNumber );
45 
48 void Kalman_DiscardFilter( KFilter filter );
49 
55 void Kalman_SetInputFactor( KFilter filter, size_t stateIndex, size_t inputIndex, double ratio );
56 
62 void Kalman_SetTransitionFactor( KFilter filter, size_t newStateIndex, size_t oldStateIndex, double ratio );
63 
69 void Kalman_SetMeasureWeight( KFilter filter, size_t measureIndex, size_t stateIndex, double maxError );
70 
75 void Kalman_SetMeasure( KFilter filter, size_t measureIndex, double value );
76 
81 void Kalman_SetInput( KFilter filter, size_t inputIndex, double value );
82 
88 double* Kalman_Predict( KFilter filter, double* inputsList, double* result );
89 
95 double* Kalman_Update( KFilter filter, double* measuresList, double* result );
96 
99 void Kalman_Reset( KFilter filter );
100 
101 
102 #endif // KALMAN_FILTERS_H
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.
Kalman_Update
double * Kalman_Update(KFilter filter, double *measuresList, double *result)
Runs update phase on given Kalman filter
Kalman_CreateFilter
KFilter Kalman_CreateFilter(size_t statesNumber, size_t measurementsNumber, size_t inputsNumber)
Creates and initializes internal matrices of Kalman filter data structure
Kalman_Predict
double * Kalman_Predict(KFilter filter, double *inputsList, double *result)
Runs prediction phase on given Kalman filter
Kalman_SetMeasureWeight
void Kalman_SetMeasureWeight(KFilter filter, size_t measureIndex, size_t stateIndex, double maxError)
Defines impact of a measurement variable for state estimation
Kalman_DiscardFilter
void Kalman_DiscardFilter(KFilter filter)
Deallocates internal data of given filter
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
Kalman_Reset
void Kalman_Reset(KFilter filter)
Resets internal filter matrices data.
KFilter
KFilterData * KFilter
Opaque reference to Kalman filter data structure.
Definition: kalman_filters.h:36
Kalman_SetInput
void Kalman_SetInput(KFilter filter, size_t inputIndex, double value)
Sets new value for a single input.
Kalman_SetMeasure
void Kalman_SetMeasure(KFilter filter, size_t measureIndex, double value)
Sets new value for a single measument.
KFilterData
struct _KFilterData KFilterData
Single Kalman filter instance internal data structure.
Definition: kalman_filters.h:34