下载此文档

卡尔曼滤波.doc


文档分类:行业资料 | 页数:约8页 举报非法文档有奖
1/8
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/8 下载此文档
文档列表 文档介绍
卡尔曼滤波简介+ 算法实现代码最佳线性滤波理论起源于 40年代美国科学家 Wiener 和前苏联科学家K олмогоров等人的研究工作,后人统称为维纳滤波理论。从理论上说,维纳滤波的最大缺点是必须用到无限过去的数据,不适用于实时处理。为了克服这一缺点, 60年代 Kalman 把状态空间模型引入滤波理论,并导出了一套递推估计算法,后人称之为卡尔曼滤波理论。卡尔曼滤波是以最小均方误差为估计的最佳准则,来寻求一套递推估计的算法,其基本思想是:采用信号与噪声的状态空间模型,利用前一时刻地估计值和现时刻的观测值来更新对状态变量的估计,求出现时刻的估计值。它适合于实时处理和计算机运算。现设线性时变系统的离散状态防城和观测方程为: X(k) = F(k,k-1) · X(k-1)+T(k,k-1) · U(k-1) Y(k) = H(k) · X(k)+N(k) 其中 X(k) 和 Y(k) 分别是 k时刻的状态矢量和观测矢量 F(k,k-1) 为状态转移矩阵 U(k) 为k时刻动态噪声 T(k,k-1) 为系统控制矩阵 H(k) 为k时刻观测矩阵 N(k) 为 k时刻观测噪声则卡尔曼滤波的算法流程为: X(k)^= F(k,k-1) · X(k-1) C(k)^=F(k,k-1) × C(k) × F(k,k-1)'+T(k,k-1) × Q(k) × T(k,k-1)' Q(k) = U(k) × U(k)' K(k) = C(k)^ × H(k)' × [H(k) × C(k)^ × H(k)'+R(k)]^(-1) R(k) = N(k) × N(k)' X(k)~=X(k)^+K(k) × [Y(k)-H(k) × X(k)^] C(k)~ = [I-K(k) × H(k)] × C(k)^ × [I-K(k) × H(k)]'+K(k) × R(k) × K(k)' 6. X(k+1) = X(k)~ C(k+1) = C(k)~ 重复以上步骤其c语言实现代码如下: #include "" #include "" int lman(n,m,k,f,q,r,h,y,x,p,g) int n,m,k; double f[],q[],r[],h[],y[],x[],p[],g[]; { int i,j,kk,ii,l,jj,js; double *e,*a,*b; e=malloc(m*m* sizeof ( double )); l=m; if (l<n) l=n; a=malloc(l*l* sizeof ( double )); b=malloc(l*l* sizeof ( double )); for (i=0; i<=n-1; i++) for (j=0; j<=n-1; j++) { ii=i*l+j; a[ii]=; for (kk=0; kk<=n-1; kk++) a[ii]=a[ii]+p[i*n+kk]*f[j*n+kk]; } for (i=0; i<=n-1; i++) for (j=0; j<=n-1; j++) { ii=i*n+j; p[ii]=q[ii]; for (kk=0; k

卡尔曼滤波 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数8
  • 收藏数0 收藏
  • 顶次数0
  • 上传人gyzhluyin
  • 文件大小0 KB
  • 时间2016-07-12
最近更新