📄 kalmantrackor.h
字号:
#if !defined(AFX_KALMANTRACKOR_H__F60F112D_4B8C_4546_AE9F_05A9B455D6EF__INCLUDED_)
#define AFX_KALMANTRACKOR_H__F60F112D_4B8C_4546_AE9F_05A9B455D6EF__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "matrix.h"
// KalmanTrackor.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// KalmanTrackor window
class KalmanTrackor : public CEdit
{
// Construction
public:
KalmanTrackor();
// Attributes
public:
bool Inibool; /*初始化设置*/
matrix state_pre; /* 预测状态 (x'(k)): x(k)=A*x(k-1)+B*u(k) */
matrix state_post; /* 矫正状态 (x(k)):
x(k)=x'(k)+K(k)*(z(k)-H*x'(k)) */
// matrix* state_k_1; 这个最优值是有借口得到的,即前一时刻的最优值
matrix measurement_vector;
matrix transition_matrix; /* 状态传递矩阵 state transition matrix (A) */
matrix control_matrix; /* 控制矩阵 control matrix (B)
(如果没有控制,则不使用它)*/// 这里我们为空
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)*/ // 4*4
matrix gain; /* Kalman 增益矩阵 gain matrix (K(k)):
K(k)=P'(k)*Ht*inv(H*P'(k)*Ht+R) */
matrix error_cov_post; /* 后验错误估计协方差矩阵 // 4*4
posteriori error estimate covariance matrix (P(k)):
P(k)=(I-K(k)*H)*P'(k) */
int D_P;
int M_P;
int C_P;
// Operations
public:
void KalmanTrackor::CreateKalman( int MP, /* 测量向量维数 */
int DP, /* 状态向量维数 */
int CP, /* 控制向量维数 */
double T , /* 转移矩阵中的T */
CPoint Inipoint,
int vx,
int vy);
CPoint TrackProcess_NewFrame(int mark, CPoint meansurpoint); /*传入我们度量的点 是的,
然后把值给观测矩阵 2*1的矩阵向量*/
private:
bool KalmanPredict(); /*预测k时刻状态*/
void KalmanCorrect(); /*得到修正后的最优值和偏差*/
void KalmanCorrect_state_post(); //修正后验值
void KalmanCorrect_error_cov_post(); //修正后验值的偏差
void Kalman_get_gain(); /*计算kalman增益*/
void CreateRanddom_MeasureCov();
void CreateRanddom_ProcessCov();
void clearup(); /*撤销资源*/
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(KalmanTrackor)
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~KalmanTrackor();
// Generated message map functions
protected:
//{{AFX_MSG(KalmanTrackor)
// NOTE - the ClassWizard will add and remove member functions here.
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_KALMANTRACKOR_H__F60F112D_4B8C_4546_AE9F_05A9B455D6EF__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -