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

📄 kalma.txt

📁 卡尔曼滤波算法的Vc程序
💻 TXT
字号:
 //predicted value
  double Xk_1[30][4];
  double P_1[30][16];
  //Kalman gain
  double K[30][8];
  //Obervation
  double Zk[30][2];
double Xk[30][4];  
double P[30][16];
迭代计算:
    //Kalman Filter
   for(ii = 0;ii<list_num;ii++){
//Kalman first: Prediction
   Xk_1[ii][0] = Xk[ii][0] + T*Xk[ii][1];//x
Xk_1[ii][1] = Xk[ii][1];//vx
   Xk_1[ii][2] = Xk[ii][2] + T*Xk[ii][3];//y
   Xk_1[ii][3] = Xk[ii][3];//vy
//Kalman second: Predict error covariance
P_1[ii][0] = P[ii][0]+T*P[ii][4]+T*P[ii][1]+T*T*P[ii][5] + 0.33; 
   P_1[ii][1] = P[ii][1]+T*P[ii][5];
   P_1[ii][2] = P[ii][2]+T*P[ii][6]+T*P[ii][3]+T*T*P[ii][7];
   P_1[ii][3] = P[ii][3]+T*P[ii][7];
   P_1[ii][4] = P[ii][4]+T*P[ii][5];
   P_1[ii][5] = P[ii][5] + 0.33;
   P_1[ii][6] = P[ii][6]+T*P[ii][7];
   P_1[ii][7] = P[ii][7];
   P_1[ii][8] = P[ii][8]+T*P[ii][12]+T*P[ii][9]+T*T*P[ii][13];
   P_1[ii][9] = P[ii][9]+T*P[ii][13];
   P_1[ii][10] = P[ii][10]+T*P[ii][14]+T*P[ii][11]+T*T*P[ii][15] + 0.33;
   P_1[ii][11] = P[ii][11]+T*P[ii][15];
   P_1[ii][12] = P[ii][12]+T*P[ii][13];
   P_1[ii][13] = P[ii][13];
P_1[ii][14] = P[ii][14]+T*P[ii][15];
   P_1[ii][15] = P[ii][15] + 0.33;
//Kalman third: Kalman Gain
   double denominator = 0.0;
   denominator= (P_1[ii][0]+k_noise_co)*(P_1[ii][10]+k_noise_co)-P_1[ii][2]*P_1[ii][8];
K[ii][0]= ((P_1[ii][0]*(P_1[ii][10]+k_noise_co)-P_1[ii][2]*P_1[ii][8])/( denominator ));
   K[ii][1]= ((P_1[ii][2]*(P_1[ii][0]+k_noise_co)-P_1[ii][0]*P_1[ii][2])/( denominator ));
   K[ii][2]= ((P_1[ii][4]*(P_1[ii][10]+k_noise_co)-P_1[ii][6]*P_1[ii][8])/( denominator ));
   K[ii][3]= ((P_1[ii][6]*(P_1[ii][0]+k_noise_co)-P_1[ii][4]*P_1[ii][2])/( denominator ));
   K[ii][4]= ((P_1[ii][8]*(P_1[ii][10]+k_noise_co)-P_1[ii][10]*P_1[ii][8])/( denominator ));
   K[ii][5]= ((P_1[ii][10]*(P_1[ii][0]+k_noise_co)-P_1[ii][8]*P_1[ii][2])/( denominator ));
   K[ii][6]= ((P_1[ii][12]*(P_1[ii][10]+k_noise_co)-P_1[ii][14]*P_1[ii][8])/( denominator ));
   K[ii][7]= ((P_1[ii][14]*(P_1[ii][0]+k_noise_co)-P_1[ii][12]*P_1[ii][2])/( denominator ));
//Kalman fourth:filter
Xk[ii][0] = Xk_1[ii][0] + K[ii][0]*(Zk[ii][0]-Xk_1[ii][0]) + 
     K[ii][1]*(Zk[ii][1]-Xk_1[ii][2]);
   Xk[ii][1] = Xk_1[ii][1] + K[ii][2]*(Zk[ii][0]-Xk_1[ii][0]) + 
             K[ii][3]*(Zk[ii][1]-Xk_1[ii][2]);
   Xk[ii][2] = Xk_1[ii][2] + K[ii][4]*(Zk[ii][0]-Xk_1[ii][0]) + 
            K[ii][5]*(Zk[ii][1]-Xk_1[ii][2]);
   Xk[ii][3] = Xk_1[ii][3] + K[ii][6]*(Zk[ii][0]-Xk_1[ii][0]) + 
           K[ii][7]*(Zk[ii][1]-Xk_1[ii][2]);
//Kalman fifth:filter covariance
   P[ii][0] = (1-K[ii][0])*P_1[ii][0] - K[ii][1]*P_1[ii][8];
   P[ii][1] = (1-K[ii][0])*P_1[ii][1] - K[ii][1]*P_1[ii][9];
   P[ii][2] = (1-K[ii][0])*P_1[ii][2] - K[ii][1]*P_1[ii][10];
   P[ii][3] = (1-K[ii][0])*P_1[ii][3] - K[ii][1]*P_1[ii][11];
   P[ii][4] = -K[ii][2]*P_1[ii][0] + P_1[ii][4] - K[ii][3]*P_1[ii][8];
   P[ii][5] = -K[ii][2]*P_1[ii][1] + P_1[ii][5] - K[ii][3]*P_1[ii][9];
P[ii][6] = -K[ii][2]*P_1[ii][2] + P_1[ii][6] - K[ii][3]*P_1[ii][10];
   P[ii][7] = -K[ii][2]*P_1[ii][3] + P_1[ii][7] - K[ii][3]*P_1[ii][11];
   P[ii][8] = -K[ii][4]*P_1[ii][0] + (1-K[ii][5])*P_1[ii][8];
   P[ii][9] = -K[ii][4]*P_1[ii][1] + (1-K[ii][5])*P_1[ii][9];
   P[ii][10] = -K[ii][4]*P_1[ii][2] + (1-K[ii][5])*P_1[ii][10];
   P[ii][11] = -K[ii][4]*P_1[ii][3] + (1-K[ii][5])*P_1[ii][11];
   P[ii][12] = -K[ii][6]*P_1[ii][0] - K[ii][7]*P_1[ii][8] + P_1[ii][12];
P[ii][13] = -K[ii][6]*P_1[ii][1] - K[ii][7]*P_1[ii][9] + P_1[ii][13];
   P[ii][14] = -K[ii][6]*P_1[ii][2] - K[ii][7]*P_1[ii][10] + P_1[ii][14];
   P[ii][15] = -K[ii][6]*P_1[ii][3] - K[ii][7]*P_1[ii][11] + P_1[ii][15];
        
}//end of for(ii = 0;...)

⌨️ 快捷键说明

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