|   | Previous | Next | 
[grad] = ckbs_process_grad(
      x, g, dg, qinv)
 \[
\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}
( 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 matrix 
 Q_k
 is
symmetric positive definite and
 x_0
 is the constant zero.
 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} )
& = &  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
 is a two dimensional array,
for 
 k = 1 , \ldots , N
 \[
      x_k = x(:, k)
\]
and 
x
 has size 
 n \times N
.
g
 is a two dimensional array,
for 
 k = 1 , \ldots , N
 \[
      g_k = g(:, k)
\]
and 
g
 has size 
 n \times N
.
dg
 is a three dimensional array,
for 
 k = 1 , \ldots , N
 \[
      G_k = dg(:,:,k)
\]
and 
dg
 has size 
 n \times n \times N
.
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
.
grad
 is a two dimensional array,
for 
 k = 1 , \ldots , N
 \[
      d_k = grad(:, k)
\]
and 
grad
 has size 
 n \times N
.
ckbs_process_grad.
It returns true if ckbs_process_grad passes the test
and false otherwise.