LinearSystemModel
The LinearSystemModel class describes the temporal evolution of a system state \(x_k \in \mathbb{R}^N\) in the form of $$x_k = \mathbf{A}_k x_{k-1} + \mathbf{B}_k w_k + u_k \enspace,$$ with
- system matrix \(\mathbf{A}_k \in \mathbb{R}^{N \times N}\), 
- system noise matrix \(\mathbf{B}_k \in \mathbb{R}^{N \times W} \), 
- system noise \(w_k \in \mathbb{R}^W \), and 
- system input vector \(u_k \in \mathbb{R}^N\). 
The LinearSystemModel class also implements a SystemModel.
Usage
Configure a LinearSystemModel instance using the respective set* methods:
- 
Set the system matrix \(\mathbf{A}_k\) with setSystemMatrix() If no system matrix is set, the LinearSystemModel instance uses an identity matrix of appropriate dimensions as system matrix. 
- 
Set the system noise matrix \(\mathbf{B}_k\) with setSystemNoiseMatrix() If no system noise matrix is set, the LinearSystemModel instance uses an identity matrix of appropriate dimensions as system noise matrix. 
- 
Set the system noise \(w_k\) with setNoise() You have to pass an instance of a Distribution subclass, e.g., a Gaussian. See also the list of available Probability Distributions. 
- 
Set the system input vector \(u_k\) with setSystemInput() Set an empty matrix if no input has to be used. If no system input is set, the LinearSystemModel instance uses an empty matrix. 
You can pass a system matrix \(\mathbf{A}_k\) and a system noise matrix \(\mathbf{B}_k\) also to the LinearSystemModel's constructor.
You can access the set matrices and noise through the LinearSystemModel's properties.
Example
We implement a constant acceleration model for a 2D target described by the system state $$x_k = [p^x_k, p^y_k, \dot{p}^x_k, \dot{p}^y_k, \ddot{p}^x_k, \ddot{p}^y_k]^\top \enspace.$$ The model is given by $$x_k = \mathbf{A} x_{k-1} + \mathbf{B} w_k \enspace,$$ with matrices $$\mathbf{A} = \begin{bmatrix} \mathbf{I}_2 & T \, \mathbf{I}_2 & \frac{1}{2} T^2 \, \mathbf{I}_2 \\ \mathbf{0} & \mathbf{I}_2 & T \, \mathbf{I}_2 \\ \mathbf{0} & \mathbf{0} & \mathbf{I}_2 \end{bmatrix} \enspace,\quad \mathbf{B} = \begin{bmatrix} \frac{1}{2} T^2 \, \mathbf{I}_2 \\ T \, \mathbf{I}_2 \\ \mathbf{I}_2 \end{bmatrix} \enspace,$$ time period \(T = 0.01\), and zero-mean white Gaussian noise \(w_k\) with covariance matrix \(\mathbf{Q} = 0.1\mathbf{I}_2\).
T = 0.01;
A = [eye(2)   T * eye(2) 0.5 * T^2 * eye(2)
     zeros(2) eye(2)     T * eye(2)
     zeros(2) zeros(2)   eye(2)            ];
B = [0.5 * T^2 * eye(2)
     T * eye(2)
     eye(2)            ];
w = Gaussian(zeros(2, 1), 0.1*eye(2));
sysModel = LinearSystemModel();
sysModel.setSystemMatrix(A);
sysModel.setSystemNoiseMatrix(B);
sysModel.setNoise(w);
% Alternative construction:
sysModel = LinearSystemModel(A, B);
sysModel.setNoise(w);