声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2756|回复: 3

[经典算法] Kalman滤波的VC程序

[复制链接]
发表于 2006-7-28 17:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
谢谢,哪位编过Kalman滤波,我想用它来做跟踪

时间紧,希望能共享一下

发邮件吧:crystal0516@163.com

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2006-8-5 10:20 | 显示全部楼层
  1.   //predicted value
  2.   double Xk_1[30][4];
  3.   double P_1[30][16];
  4.   //Kalman gain
  5.   double K[30][8];
  6.   //Obervation
  7.   double Zk[30][2];
  8. double Xk[30][4];  
  9. double P[30][16];
  10. 迭代计算:
  11.     //Kalman Filter
  12.    for(ii = 0;ii<list_num;ii++){
  13. //Kalman first: Prediction
  14.    Xk_1[ii][0] = Xk[ii][0] + T*Xk[ii][1];//x
  15. Xk_1[ii][1] = Xk[ii][1];//vx
  16.    Xk_1[ii][2] = Xk[ii][2] + T*Xk[ii][3];//y
  17.    Xk_1[ii][3] = Xk[ii][3];//vy
  18. //Kalman second: Predict error covariance
  19. P_1[ii][0] = P[ii][0]+T*P[ii][4]+T*P[ii][1]+T*T*P[ii][5] + 0.33;
  20.    P_1[ii][1] = P[ii][1]+T*P[ii][5];
  21.    P_1[ii][2] = P[ii][2]+T*P[ii][6]+T*P[ii][3]+T*T*P[ii][7];
  22.    P_1[ii][3] = P[ii][3]+T*P[ii][7];
  23.    P_1[ii][4] = P[ii][4]+T*P[ii][5];
  24.    P_1[ii][5] = P[ii][5] + 0.33;
  25.    P_1[ii][6] = P[ii][6]+T*P[ii][7];
  26.    P_1[ii][7] = P[ii][7];
  27.    P_1[ii][8] = P[ii][8]+T*P[ii][12]+T*P[ii][9]+T*T*P[ii][13];
  28.    P_1[ii][9] = P[ii][9]+T*P[ii][13];
  29.    P_1[ii][10] = P[ii][10]+T*P[ii][14]+T*P[ii][11]+T*T*P[ii][15] + 0.33;
  30.    P_1[ii][11] = P[ii][11]+T*P[ii][15];
  31.    P_1[ii][12] = P[ii][12]+T*P[ii][13];
  32.    P_1[ii][13] = P[ii][13];
  33. P_1[ii][14] = P[ii][14]+T*P[ii][15];
  34.    P_1[ii][15] = P[ii][15] + 0.33;
  35. //Kalman third: Kalman Gain
  36.    double denominator = 0.0;
  37.    denominator= (P_1[ii][0]+k_noise_co)*(P_1[ii][10]+k_noise_co)-P_1[ii][2]*P_1[ii][8];
  38. K[ii][0]= ((P_1[ii][0]*(P_1[ii][10]+k_noise_co)-P_1[ii][2]*P_1[ii][8])/( denominator ));
  39.    K[ii][1]= ((P_1[ii][2]*(P_1[ii][0]+k_noise_co)-P_1[ii][0]*P_1[ii][2])/( denominator ));
  40.    K[ii][2]= ((P_1[ii][4]*(P_1[ii][10]+k_noise_co)-P_1[ii][6]*P_1[ii][8])/( denominator ));
  41.    K[ii][3]= ((P_1[ii][6]*(P_1[ii][0]+k_noise_co)-P_1[ii][4]*P_1[ii][2])/( denominator ));
  42.    K[ii][4]= ((P_1[ii][8]*(P_1[ii][10]+k_noise_co)-P_1[ii][10]*P_1[ii][8])/( denominator ));
  43.    K[ii][5]= ((P_1[ii][10]*(P_1[ii][0]+k_noise_co)-P_1[ii][8]*P_1[ii][2])/( denominator ));
  44.    K[ii][6]= ((P_1[ii][12]*(P_1[ii][10]+k_noise_co)-P_1[ii][14]*P_1[ii][8])/( denominator ));
  45.    K[ii][7]= ((P_1[ii][14]*(P_1[ii][0]+k_noise_co)-P_1[ii][12]*P_1[ii][2])/( denominator ));
  46. //Kalman fourth:filter
  47. Xk[ii][0] = Xk_1[ii][0] + K[ii][0]*(Zk[ii][0]-Xk_1[ii][0]) +
  48.      K[ii][1]*(Zk[ii][1]-Xk_1[ii][2]);
  49.    Xk[ii][1] = Xk_1[ii][1] + K[ii][2]*(Zk[ii][0]-Xk_1[ii][0]) +
  50.              K[ii][3]*(Zk[ii][1]-Xk_1[ii][2]);
  51.    Xk[ii][2] = Xk_1[ii][2] + K[ii][4]*(Zk[ii][0]-Xk_1[ii][0]) +
  52.             K[ii][5]*(Zk[ii][1]-Xk_1[ii][2]);
  53.    Xk[ii][3] = Xk_1[ii][3] + K[ii][6]*(Zk[ii][0]-Xk_1[ii][0]) +
  54.            K[ii][7]*(Zk[ii][1]-Xk_1[ii][2]);
  55. //Kalman fifth:filter covariance
  56.    P[ii][0] = (1-K[ii][0])*P_1[ii][0] - K[ii][1]*P_1[ii][8];
  57.    P[ii][1] = (1-K[ii][0])*P_1[ii][1] - K[ii][1]*P_1[ii][9];
  58.    P[ii][2] = (1-K[ii][0])*P_1[ii][2] - K[ii][1]*P_1[ii][10];
  59.    P[ii][3] = (1-K[ii][0])*P_1[ii][3] - K[ii][1]*P_1[ii][11];
  60.    P[ii][4] = -K[ii][2]*P_1[ii][0] + P_1[ii][4] - K[ii][3]*P_1[ii][8];
  61.    P[ii][5] = -K[ii][2]*P_1[ii][1] + P_1[ii][5] - K[ii][3]*P_1[ii][9];
  62. P[ii][6] = -K[ii][2]*P_1[ii][2] + P_1[ii][6] - K[ii][3]*P_1[ii][10];
  63.    P[ii][7] = -K[ii][2]*P_1[ii][3] + P_1[ii][7] - K[ii][3]*P_1[ii][11];
  64.    P[ii][8] = -K[ii][4]*P_1[ii][0] + (1-K[ii][5])*P_1[ii][8];
  65.    P[ii][9] = -K[ii][4]*P_1[ii][1] + (1-K[ii][5])*P_1[ii][9];
  66.    P[ii][10] = -K[ii][4]*P_1[ii][2] + (1-K[ii][5])*P_1[ii][10];
  67.    P[ii][11] = -K[ii][4]*P_1[ii][3] + (1-K[ii][5])*P_1[ii][11];
  68.    P[ii][12] = -K[ii][6]*P_1[ii][0] - K[ii][7]*P_1[ii][8] + P_1[ii][12];
  69. P[ii][13] = -K[ii][6]*P_1[ii][1] - K[ii][7]*P_1[ii][9] + P_1[ii][13];
  70.    P[ii][14] = -K[ii][6]*P_1[ii][2] - K[ii][7]*P_1[ii][10] + P_1[ii][14];
  71.    P[ii][15] = -K[ii][6]*P_1[ii][3] - K[ii][7]*P_1[ii][11] + P_1[ii][15];
  72.         
  73. }//end of for(ii = 0;...)
复制代码
发表于 2006-8-9 11:11 | 显示全部楼层
hao!非常不错!!!
发表于 2006-11-27 10:22 | 显示全部楼层

好。。。。。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-6-4 13:45 , Processed in 0.049878 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表