Implements an Infinite Impulse Response filter with order _Order specified as template parameters and _DataDimension is the Dimension of the data to filter (1-D, 2-D, 3-D, etc..)
More...
#include <IIR.hpp>
|
| | IIR (const Eigen::Matrix< double, _Order+1, 1 > &b, const Eigen::Matrix< double, _Order+1, 1 > &a) |
| | Constructor. More...
|
| |
| Eigen::Matrix< double, _DataDimension, 1 > | perform (const Eigen::Matrix< double, _DataDimension, 1 > &data) |
| |
| Eigen::Matrix< double, _DataDimension, 1 > | perform (const Eigen::Matrix< double, _DataDimension, 1 > &data, Eigen::Matrix< double, _DataDimension, _DataDimension > &dataCov, const bool covariance=true) |
| |
|
| Eigen::Matrix< double, _DataDimension, 1 > | iirFilter (const Eigen::Matrix< double, _Order+1, 1 > &b, const Eigen::Matrix< double, _Order+1, 1 > &a, const Eigen::Matrix< double, _DataDimension, _Order+1 > &x, Eigen::Matrix< double, _DataDimension, _Order+1 > &y) |
| | IIR filter. More...
|
| |
| Eigen::Matrix< double, _DataDimension, _DataDimension > | iirFilterCov (const Eigen::Matrix< double, _DataDimension,(_Order+1)*_DataDimension > &bMatrix, const Eigen::Matrix< double, _DataDimension,(_Order+1)*_DataDimension > &aMatrix, const Eigen::Matrix< double,(_Order+1)*_DataDimension,(_Order+1)*_DataDimension > &xCov, Eigen::Matrix< double,(_Order+1)*_DataDimension,(_Order+1)*_DataDimension > &yCov) |
| | IIR filter Cov. More...
|
| |
|
| Eigen::Matrix< double, _Order+1, 1 > | bCoeff |
| |
| Eigen::Matrix< double, _Order+1, 1 > | aCoeff |
| |
| Eigen::Matrix< double, _DataDimension, _Order+1 > | originalData |
| |
| Eigen::Matrix< double, _DataDimension, _Order+1 > | filteredData |
| |
| Eigen::Matrix< double,(_Order+1)*_DataDimension,(_Order+1)*_DataDimension > | originalDataCov |
| |
| Eigen::Matrix< double,(_Order+1)*_DataDimension,(_Order+1)*_DataDimension > | filteredDataCov |
| |
| Eigen::Matrix< double, _DataDimension,(_Order+1)*_DataDimension > | bMatrix |
| |
| Eigen::Matrix< double, _DataDimension,(_Order+1)*_DataDimension > | aMatrix |
| |
| Eigen::Matrix< double,(_Order+1)*_DataDimension,(_Order+1)*_DataDimension > | crossCov |
| |
template<unsigned int _Order, unsigned int _DataDimension>
class threed_odometry::IIR< _Order, _DataDimension >
Implements an Infinite Impulse Response filter with order _Order specified as template parameters and _DataDimension is the Dimension of the data to filter (1-D, 2-D, 3-D, etc..)
template<unsigned int _Order, unsigned int _DataDimension>
| threed_odometry::IIR< _Order, _DataDimension >::IIR |
( |
const Eigen::Matrix< double, _Order+1, 1 > & |
b, |
|
|
const Eigen::Matrix< double, _Order+1, 1 > & |
a |
|
) |
| |
|
inline |
Constructor.
- Parameters
-
| [in] | b | the feedforward filter coefficients |
| [in] | a | the feedback filter coefficients |
Form the matrix A and B of the coefficients (Only used for the uncertainty propagation)
1 x _Order+1 row
The element for the a[0] is a zero matrix, because this is the value it is calculated by the IIR filter
template<unsigned int _Order, unsigned int _DataDimension>
| Eigen::Matrix<double, _DataDimension, 1> threed_odometry::IIR< _Order, _DataDimension >::iirFilter |
( |
const Eigen::Matrix< double, _Order+1, 1 > & |
b, |
|
|
const Eigen::Matrix< double, _Order+1, 1 > & |
a, |
|
|
const Eigen::Matrix< double, _DataDimension, _Order+1 > & |
x, |
|
|
Eigen::Matrix< double, _DataDimension, _Order+1 > & |
y |
|
) |
| |
|
inlineprotected |
IIR filter.
Infinite Impulse Response (IIR) Filter for an Eigen Vector
- Author
- Javier Hidalgo Carrio.
- Parameters
-
| [in] | norder | integer number with the filter order |
| [in] | b | array of feedforward filter coefficients |
| [in] | a | array of feedback filter coefficients |
| [in] | x | array of inputs |
| [in,out] | y | array of outputs |
- Returns
- double with the result y[n]
Perform the filter
template<unsigned int _Order, unsigned int _DataDimension>
| Eigen::Matrix<double, _DataDimension, _DataDimension> threed_odometry::IIR< _Order, _DataDimension >::iirFilterCov |
( |
const Eigen::Matrix< double, _DataDimension,(_Order+1)*_DataDimension > & |
bMatrix, |
|
|
const Eigen::Matrix< double, _DataDimension,(_Order+1)*_DataDimension > & |
aMatrix, |
|
|
const Eigen::Matrix< double,(_Order+1)*_DataDimension,(_Order+1)*_DataDimension > & |
xCov, |
|
|
Eigen::Matrix< double,(_Order+1)*_DataDimension,(_Order+1)*_DataDimension > & |
yCov |
|
) |
| |
|
inlineprotected |
IIR filter Cov.
Infinite Impulse Response (IIR) Filter for the Cov Matrix of the data
- Author
- Javier Hidalgo Carrio.
- Parameters
-
| [in] | norder | integer number with the filter order |
| [in] | b | array of feedforward filter coefficients |
| [in] | a | array of feedback filter coefficients |
| [in] | x | array of inputs |
| [in,out] | y | array of outputs |
- Returns
- double with the result y[n]
template<unsigned int _Order, unsigned int _DataDimension>
| Eigen::Matrix<double, _DataDimension, 1> threed_odometry::IIR< _Order, _DataDimension >::perform |
( |
const Eigen::Matrix< double, _DataDimension, 1 > & |
data | ) |
|
|
inline |
Peform the filter calling the protected method of the class
- Parameters
-
| [in] | data | vector of dimension _DataDimension of the new sample. |
- Returns
- filtered data
template<unsigned int _Order, unsigned int _DataDimension>
| Eigen::Matrix<double, _DataDimension, 1> threed_odometry::IIR< _Order, _DataDimension >::perform |
( |
const Eigen::Matrix< double, _DataDimension, 1 > & |
data, |
|
|
Eigen::Matrix< double, _DataDimension, _DataDimension > & |
dataCov, |
|
|
const bool |
covariance = true |
|
) |
| |
|
inline |
Peform the filter calling the protected method of the class
- Parameters
-
| [in] | data | vector of dimension _DataDimension of the new sample. |
- Returns
- filtered data
Copy the new data samples to the array for filtering
Perform the IIR filter with the designed coefficients
Compute the uncertainty propagation if set to true
Check if NaN values in the matrix
Copy the cov matrix for the data samples
Move back one block for the next filter iteration
Move back one column for the next filter iteration
template<unsigned int _Order, unsigned int _DataDimension>
template<unsigned int _Order, unsigned int _DataDimension>
| Eigen::Matrix<double, _DataDimension, (_Order+1)*_DataDimension> threed_odometry::IIR< _Order, _DataDimension >::aMatrix |
|
protected |
template<unsigned int _Order, unsigned int _DataDimension>
Coefficients of a polinomia of order _Order IIR filter Coefficients
template<unsigned int _Order, unsigned int _DataDimension>
| Eigen::Matrix<double, _DataDimension, (_Order+1)*_DataDimension> threed_odometry::IIR< _Order, _DataDimension >::bMatrix |
|
protected |
template<unsigned int _Order, unsigned int _DataDimension>
| Eigen::Matrix<double, (_Order+1)*_DataDimension, (_Order+1)*_DataDimension> threed_odometry::IIR< _Order, _DataDimension >::crossCov |
|
protected |
template<unsigned int _Order, unsigned int _DataDimension>
| Eigen::Matrix<double, _DataDimension, _Order+1> threed_odometry::IIR< _Order, _DataDimension >::filteredData |
|
protected |
template<unsigned int _Order, unsigned int _DataDimension>
| Eigen::Matrix<double, (_Order+1)*_DataDimension, (_Order+1)*_DataDimension> threed_odometry::IIR< _Order, _DataDimension >::filteredDataCov |
|
protected |
template<unsigned int _Order, unsigned int _DataDimension>
| Eigen::Matrix<double, _DataDimension, _Order+1> threed_odometry::IIR< _Order, _DataDimension >::originalData |
|
protected |
Data values for original and filtered measurements
template<unsigned int _Order, unsigned int _DataDimension>
| Eigen::Matrix<double, (_Order+1)*_DataDimension, (_Order+1)*_DataDimension> threed_odometry::IIR< _Order, _DataDimension >::originalDataCov |
|
protected |
Variables for the uncertainty propagation through an IIR filter (is your original data has uncertainty)
The documentation for this class was generated from the following file:
- /build/rock-master-18.09-slam-threed-odometry-0.20160909/src/IIR.hpp