public class KalmanFilter extends Object
xk = Axk-1 + Buk-1 + wk-1with a measurement xk that is
zk = Hxk + vk.The random variables wk and vk represent the process and measurement noise and are assumed to be independent of each other and distributed with normal probability (white noise).
The Kalman filter cycle involves the following steps:
The Kalman filter is initialized with a ProcessModel
and a
MeasurementModel
, which contain the corresponding transformation and
noise covariance matrices. The parameter names used in the respective models
correspond to the following names commonly used in the mathematical
literature:
ProcessModel
,
MeasurementModel
Constructor and Description |
---|
KalmanFilter(ProcessModel process,
MeasurementModel measurement)
Creates a new Kalman filter with the given process and measurement
models.
|
Modifier and Type | Method and Description |
---|---|
void |
correct(double[] z)
Correct the current state estimate with an actual measurement.
|
void |
correct(RealVector z)
Correct the current state estimate with an actual measurement.
|
double[][] |
getErrorCovariance()
Returns the current error covariance matrix.
|
RealMatrix |
getErrorCovarianceMatrix()
Returns a copy of the current error covariance matrix.
|
int |
getMeasurementDimension()
Returns the dimension of the measurement vector.
|
int |
getStateDimension()
Returns the dimension of the state estimation vector.
|
double[] |
getStateEstimation()
Returns the current state estimation vector.
|
RealVector |
getStateEstimationVector()
Returns a copy of the current state estimation vector.
|
void |
predict()
Predict the internal state estimation one time step ahead.
|
void |
predict(double[] u)
Predict the internal state estimation one time step ahead.
|
void |
predict(RealVector u)
Predict the internal state estimation one time step ahead.
|
public KalmanFilter(ProcessModel process, MeasurementModel measurement)
process
- the model defining the underlying process dynamicsmeasurement
- the model defining the given measurement characteristicsNullArgumentException
- if any of the given inputs is null (except for the control
matrix)NonSquareMatrixException
- if the transition matrix is non squareMatrixDimensionMismatchException
- if the matrix dimensions do not fit togetherpublic int getStateDimension()
public int getMeasurementDimension()
public double[] getStateEstimation()
public RealVector getStateEstimationVector()
public double[][] getErrorCovariance()
public RealMatrix getErrorCovarianceMatrix()
public void predict()
public void predict(double[] u)
u
- the control vectorDimensionMismatchException
- if the dimension of the control vector does not fitpublic void predict(RealVector u)
u
- the control vectorDimensionMismatchException
- if the dimension of the control
vector does not fitpublic void correct(double[] z)
z
- the measurement vectorDimensionMismatchException
- if the dimension of the measurement vector does not fitSingularMatrixException
- if the covariance matrix could not be invertedpublic void correct(RealVector z)
z
- the measurement vectorDimensionMismatchException
- if the dimension of the
measurement vector does not fitSingularMatrixException
- if the covariance matrix could not be invertedCopyright © 2003-2012 Apache Software Foundation. All Rights Reserved.