Index-> contents reference index search external Previous Next Up-> ckbs utility ckbs_t_grad ckbs-> license ckbs_t_general ckbs_nonlinear ckbs_L1_nonlinear ckbs_affine ckbs_affine_singular ckbs_L1_affine utility all_ok.m whatsnew wishlist bib utility-> ckbs_t_obj ckbs_t_grad ckbs_t_hess ckbs_diag_solve ckbs_bidiag_solve ckbs_bidiag_solve_t ckbs_blkbidiag_symm_mul ckbs_blkdiag_mul ckbs_blkdiag_mul_t ckbs_blkbidiag_mul_t ckbs_blkbidiag_mul ckbs_blktridiag_mul ckbs_sumsq_obj ckbs_L2L1_obj ckbs_sumsq_grad ckbs_process_grad ckbs_sumsq_hes ckbs_process_hes ckbs_tridiag_solve ckbs_tridiag_solve_b ckbs_tridiag_solve_pcg ckbs_newton_step ckbs_newton_step_L1 ckbs_kuhn_tucker ckbs_kuhn_tucker_L1 ckbs_t_grad-> t_grad_ok.m Headings-> Syntax Purpose Notation Gradient x z g_fun h_fun qinv rinv params grad Example

Syntax
[grad] = ckbs_t_grad(       x, z, g_fun, h_fun, qinv, rinv, params)

Purpose
This computes the gradient of the of the general Student's t objective.

Notation
The affine Kalman-Bucy smoother residual sum of squares is defined by   $\begin{array}{rcl} S ( x_1 , \ldots , x_N ) & = & \sum_{k=1}^N S_k ( x_k , x_{k-1} ) \\ S_k ( x_k , x_{k-1} ) & = & \frac{1}{2} ( z_k - h_k - H_k * x_k )^\R{T} * R_k^{-1} * ( z_k - h_k - H_k * x_k ) \\ & + & \frac{1}{2} ( x_k - g_k - G_k * x_{k-1} )^\R{T} * Q_k^{-1} * ( x_k - g_k - G_k * x_{k-1} ) \end{array}$  where the matrices   R_k and   Q_k are symmetric positive definite and   x_0 is the constant zero.

We define   Q_{N+1} to be the   n \times n identity matrix and   G_{N+1} to be zero,   $\begin{array}{rcl} \nabla_k S_k^{(1)} ( x_k , x_{k-1} ) & = & H_k^\R{T} * R_k^{-1} * ( h_k + H_k * x_k - z_k ) + Q_k^{-1} * ( x_k - g_k - G_k * x_{k-1} ) \\ \nabla_k S_{k+1}^{(1)} ( x_{k+1} , x_k ) & = & G_{k+1}^\R{T} * Q_{k+1}^{-1} * ( g_{k+1} + G_{k+1} * x_k - x_{k+1} ) \end{array}$  It follows that the gradient of the affine Kalman-Bucy smoother residual sum of squares is   $\begin{array}{rcl} \nabla S ( x_1 , \ldots , x_N ) & = & \left( \begin{array}{c} d_1 \\ \vdots \\ d_N \end{array} \right) \\ d_k & = & \nabla_k S_k^{(1)} ( x_k , x_{k-1} ) + \nabla_k S_{k+1}^{(1)} ( x_{k+1} , x_k ) \end{array}$  where   S_{N+1} ( x_{N+1} , x_N ) is defined as identically zero.

x
The argument x is a two dimensional array, for   k = 1 , \ldots , N   $x_k = x(:, k)$ and x has size   n \times N .

z
The argument z is a two dimensional array, for   k = 1 , \ldots , N   $z_k = z(:, k)$ and z has size   m \times N .

g_fun
The argument g_fun is a function handle for the process model.

h_fun
The argument h_fun is a function handle for the measurement model.

qinv
The argument qinv is a three dimensional array, for   k = 1 , \ldots , N   $Q_k^{-1} = qinv(:,:,k)$ and qinv has size   n \times n \times N .

rinv
The argument rinv is a three dimensional array, for   k = 1 , \ldots , N   $R_k^{-1} = rinv(:,:,k)$ and rinv has size   m \times m \times N .

params
The argument params is a structure containing the requisite parameters.

The result grad is a two dimensional array, for   k = 1 , \ldots , N   $d_k = grad(:, k)$ and grad has size   n \times N .
The file t_grad_ok.m contains an example and test of ckbs_t_grad. It returns true if ckbs_t_grad passes the test and false otherwise.