Interface for implementation of a signal model. More...
#include <filter_model.h>
Public Member Functions | |
FilterModel (int state_dim, double rs, const std::vector< double > &weights_on_tensors, bool constrained) | |
virtual | ~FilterModel () |
virtual void | F (vnl_matrix< double > &X)=0 |
virtual void | H (const vnl_matrix< double > &X, vnl_matrix< double > &Y)=0 |
virtual void | State2Tensor (const State &x, vec_t &m, vec_t &l) |
virtual void | State2Tensor (const State &x, const vec_t &old_m, vec_t &m1, vec_t &l1, vec_t &m2, vec_t &l2) |
virtual void | State2Tensor (const State &x, const vec_t &old_m, vec_t &m1, vec_t &l1, vec_t &m2, vec_t &l2, vec_t &m3, vec_t &l3) |
int | state_dim () const |
void | set_signal_dim (int dim) |
int | signal_dim () const |
const vnl_matrix< double > & | Q () const |
const vnl_matrix< double > & | R () const |
const vnl_matrix< double > & | D () |
const vnl_vector< double > & | d () |
bool | isConstrained () |
void | set_signal_data (ISignalData *signal_data) |
Protected Member Functions | |
double | CheckZero (const double &d) |
Protected Attributes | |
const int | _state_dim |
double | _rs |
int | _signal_dim |
ISignalData * | _signal_data |
vnl_matrix< double > | _Q |
vnl_matrix< double > | _R |
vnl_matrix< double > | _D |
vnl_vector< double > | _d |
const std::vector< double > | weights_on_tensors_ |
bool | _constrained |
Interface for implementation of a signal model.
FilterModel::FilterModel | ( | int | state_dim, | |
double | rs, | |||
const std::vector< double > & | weights_on_tensors, | |||
bool | constrained | |||
) | [inline] |
Constructor
virtual FilterModel::~FilterModel | ( | ) | [inline, virtual] |
Destructor
double FilterModel::CheckZero | ( | const double & | d | ) | [protected] |
Checks if d is smaller than a small negative threshold. If yes an error is returned. Otherwise d is rounded to 0.0
const vnl_matrix<double>& FilterModel::D | ( | ) | [inline] |
The inequality constraint matrix for the constrained UKF
const vnl_vector<double>& FilterModel::d | ( | ) | [inline] |
The inequality constraint right hand side for the constrained UKF
virtual void FilterModel::F | ( | vnl_matrix< double > & | X | ) | [pure virtual] |
state transition function
Implemented in Full1T_FW, Full1T, Full2T, Full2T_FW, Full3T, Simple1T_FW, Simple1T, Simple2T, Simple2T_FW, and Simple3T.
virtual void FilterModel::H | ( | const vnl_matrix< double > & | X, | |
vnl_matrix< double > & | Y | |||
) | [pure virtual] |
observation, i.e. signal reconstruction
Implemented in Full1T_FW, Full1T, Full2T, Full2T_FW, Full3T, Simple1T_FW, Simple1T, Simple2T, Simple2T_FW, and Simple3T.
bool FilterModel::isConstrained | ( | ) | [inline] |
Are we running the contrained version of the filter?
const vnl_matrix<double>& FilterModel::Q | ( | ) | const [inline] |
The noise in the state transfer function used by the UKF.
const vnl_matrix<double>& FilterModel::R | ( | ) | const [inline] |
The noise in the signal reconstruction used by the UKF.
void FilterModel::set_signal_data | ( | ISignalData * | signal_data | ) | [inline] |
Set the pointer to the diffusion signal data
void FilterModel::set_signal_dim | ( | int | dim | ) | [inline] |
Set the dimension of the signal, and resize the corresponding matrices correspondigly
int FilterModel::signal_dim | ( | ) | const [inline] |
Returns the dimension of the signal
virtual void FilterModel::State2Tensor | ( | const State & | x, | |
const vec_t & | old_m, | |||
vec_t & | m1, | |||
vec_t & | l1, | |||
vec_t & | m2, | |||
vec_t & | l2 | |||
) | [inline, virtual] |
Extracts principal diffusion direction and eigen values from the state for the 2T cases
Reimplemented in Full2T, Full2T_FW, Simple2T, and Simple2T_FW.
Extracts principal diffusion direction and eigen values from the state for the 1T cases
Reimplemented in Full1T_FW, Full1T, Simple1T_FW, and Simple1T.
int FilterModel::state_dim | ( | ) | const [inline] |
Returns the dimension of the state
bool FilterModel::_constrained [protected] |
Are we using the constrained filter
vnl_matrix<double> FilterModel::_D [protected] |
Inequality constraint matrix, only used for constrained UKF
vnl_vector<double> FilterModel::_d [protected] |
Inequality right hand side, only used for constrained UKF
vnl_matrix<double> FilterModel::_Q [protected] |
Process noise
vnl_matrix<double> FilterModel::_R [protected] |
Signal reconstruction noise
double FilterModel::_rs [protected] |
The constant signal noise for each signal component
ISignalData* FilterModel::_signal_data [protected] |
Pointer to the diffusion signal data
int FilterModel::_signal_dim [protected] |
The dimension of the signal
const int FilterModel::_state_dim [protected] |
The dimension of the state
const std::vector<double> FilterModel::weights_on_tensors_ [protected] |
The weights of each tensor. (Most commonly equal all are equal)