⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mystruct.h

📁 VC.NET KalmanFilter.rar
💻 H
字号:

#include "Matrix.h"


/*
standard Kalman filter (in G. Welch' and G. Bishop's notation):

  x(k)=A*x(k-1)+B*u(k)+w(k)  p(w)~N(0,Q)
  z(k)=H*x(k)+v(k),   p(v)~N(0,R)
*/
typedef struct Kalman
{
    int MP;                     /* number of measurement vector dimensions */
    int DP;                     /* number of state vector dimensions */
    int CP;                     /* number of control vector dimensions */

    Matrix state_pre;           /* predicted state (x'(k)):
                                    x(k)=A*x(k-1)+B*u(k) */
    Matrix state_post;          /* corrected state (x(k)):
                                    x(k)=x'(k)+K(k)*(z(k)-H*x'(k)) */
    Matrix transition_matrix;   /* state transition matrix (A) */
    Matrix control_matrix;      /* control matrix (B)
                                   (it is not used if there is no control)*/
    Matrix measurement_matrix;  /* measurement matrix (H) */
    Matrix process_noise_cov;   /* process noise covariance matrix (Q) */
    Matrix measurement_noise_cov; /* measurement noise covariance matrix (R) */
    Matrix error_cov_pre;       /* priori error estimate covariance matrix (P'(k)):
                                    P'(k)=A*P(k-1)*At + Q)*/
    Matrix gain;                /* Kalman gain matrix (K(k)):
                                    K(k)=P'(k)*Ht*inv(H*P'(k)*Ht+R)*/
    Matrix error_cov_post;      /* posteriori error estimate covariance matrix (P(k)):
                                    P(k)=(I-K(k)*H)*P'(k) */
    Matrix temp1;               /* temporary matrices */
    Matrix temp2;
    Matrix temp3;
    Matrix temp4;
    Matrix temp5;
}
Kalman;

class CKalmanFilter
{
	public:
		Kalman kalman;
		CKalmanFilter(int MP,int DP,int CP);
// 		~CKalmanFilter();
		Matrix KalmanPredict(Kalman &kalman,const Matrix control);
		Matrix KalmanPredict(Kalman &kalman);
		Matrix KalmanUpdate(Kalman  &kalman, const Matrix measurement);
		BOOL InitKalman(Kalman &kalman,Matrix stateInit,Matrix covInit, Matrix transitionMatrix, 
							   Matrix measureMatrxi,Matrix processNoiseCov, Matrix measureNoiseCov,
							   Matrix controlMatrix);
		BOOL InitKalman(Kalman &kalman,Matrix stateInit,Matrix covInit, Matrix transitionMatrix,
			Matrix measureMatrxi,Matrix processNoiseCov, Matrix measureNoiseCov);
		Matrix GetInitState(Matrix measurement,double timeStep);
		Matrix GetInitCov(Matrix measurement,double timeStep);
	protected:
	private:
		
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -