Usage

define a parameter and state structure, which depends on the algorithm you use : ukf_*_param, ukf_*_state

call the proper function initializing the state : ukf_*_init()

iterate with the proper function by providing a sample : ukf_*_iterate()

free the memory : ukf_*_free() To use these functions, you simply need to define you evolution/observation functions, provided to the ukf_*_iterate functions as well as the samples.

Warning : Be sure to always use gsl_vector_get and gsl_vector_set in your evolution/observation functions, never access the fiels of the vectors with the data array of the gsl_vectors.

UKF for parameter estimation

For UKF for parameter estimation, two versions are implemented : in case of a scalar output or vectorial output. The vectorial version works also in the scalar case but is more expensive (memory and time) than the scalar version when the output is scalar.
For the scalar version :

In this example, we use a RBF network with 10 kernels to approximate the sinc function on [-5.0,5.0] To make the life easier for the algorithm, we evenly spread the centers of the gaussians on [-5.0, 5.0].

The results are saved in 'example-003.data', the first column contains the x-position, the second column the result given by the trained RBF and the last column the value of sinc(x)

RBF learning the sinc function

Example 4 : Using a 2-2-3 MLP to learn three boolean functions : XOR, AND, OR

Example 5 : Using a 2-12-2 MLP to learn the Mackay-robot arm problem

In this example, we learn the two outputs (x,y) from the inputs (theta, phi) of the Mackay-robot arm dataset. For this we train a 2-12-2 MLP with a parametrized sigmoidal transfer function.

Learning the x-component

Learning the y-component

Example 6 : Finding the minimum of the Rosenbrock banana function

We use here UKF for parameter estimation to find the minimum of the Rosenbrock banana function :

Minimisation of the Rosenbrock banana function

Example 7 : Finding the parameters of a Lorentz attractor

In this example, we try to find the parameters (initial condition, evolution parameters) of a noisy lorentz attractor. The dynamic of the lorentz attractor is defined by the three equations :

While observing a noisy trajectory of such a Lorentz attractor, the algorithm tries to find the current state and the evolution parameters . The samples we provide are .

To clearly see how UKF catches the true state, we initialized the estimated state of UKF to -15, -15 , -15