Home > src > crts_smooth.m

# crts_smooth

## PURPOSE CRTS_SMOOTH - Additive form cubature Rauch-Tung-Striebel smoother

## SYNOPSIS function [M,P,D] = crts_smooth(M,P,f,Q,f_param,same_p)

## DESCRIPTION ``` CRTS_SMOOTH - Additive form cubature Rauch-Tung-Striebel smoother

Syntax:
[M,P,D] = CKF_SMOOTH(M,P,a,Q,[param,same_p])

In:
M - NxK matrix of K mean estimates from Cubature Kalman filter
P - NxNxK matrix of K state covariances from Cubature Kalman Filter
f - Dynamic model function as a matrix F defining
linear function f(x) = F*x, inline function,
function handle or name of function in
form f(x,param)                   (optional, default eye())
Q - NxN process noise covariance matrix or NxNxK matrix
of K state process noise covariance matrices for each step.
f_param - Parameters of f. Parameters should be a single cell array,
vector or a matrix containing the same parameters for each
step, or if different parameters are used on each step they
must be a cell array of the format { param_1, param_2, ...},
where param_x contains the parameters for step x as a cell array,
a vector or a matrix.   (optional, default empty)
same_p - If 1 uses the same parameters
on every time step      (optional, default 1)

Out:
M - Smoothed state mean sequence
P - Smoothed state covariance sequence
D - Smoother gain sequence

Description:
Cubature Rauch-Tung-Striebel smoother algorithm. Calculate
"smoothed" sequence from given Kalman filter output sequence by
conditioning all steps to all measurements. Uses the spherical-

Example:
m = m0;
P = P0;
MM = zeros(size(m,1),size(Y,2));
PP = zeros(size(m,1),size(m,1),size(Y,2));
for k=1:size(Y,2)
[m,P] = ckf_predict(m,P,f,Q);
[m,P] = ckf_update(m,P,Y(:,k),h,R);
MM(:,k) = m;
PP(:,:,k) = P;
end
[SM,SP] = crts_smooth(MM,PP,f,Q);