文档介绍:最佳线性滤波理论起源于40年代美国科学家Wiener和前苏联科学家K
OHMor等人的研究工作,后人统称为维纳滤波理论。从理论上说,维纳滤波的最大缺点是必须用到无限过去的数据,不适用于实时处理。为了克服这一缺点,60年代Kalman把状态0;i<=m-1;i++)
{jj=i*l;b[jj]=y[(ii-1)*m+i];
for(j=0;j<=n-1;j++)
b[jj]=b[jj]-h[i*n+j]*x[(ii-1)*n+j];
}
for(i=0;i<=n-1;i++)
{jj=(ii-1)*n+i;
for(j=0;j<=m-1;j++)
x[jj]=x[jj]+g[i*m+j]*b[j*l];
}
讦(ii<k)
{for(i=0;i<=n-1;i++)
for(j=0;j<=n-1;j++)
{jj=i*l+j;a[jj]=;
for(kk=0;kk<=m-1;kk++)
a[jj]=a[jj]-g[i*m+kk]*h[kk*n+j];
讦(i==j)a[jj]=+a[jj];
}
for(i=0;i<=n-1;i++)
for(j=0;j<=n-1;j++)
{jj=i*l+j;b[jj]=;
for(kk=0;kk<=n-1;kk++)
}
for(i=0;i<=n-1;i++)
b[jj]=b[jj]+a[i*l+kk]*p[kk*n+j];
a[jj]=a[jj]+p[i*n+kk]*h[j*n+kk];
for(j=0;j<=n-1;j++)
{jj=i*l+j;a[jj]=;
for(kk=0;kk<=n-1;kk++)
a[jj]=a[jj]+b[i*l+kk]*f[j*n+kk];}
for(i=0;i<=n-1;i++)
for(j=0;j<=n-1;j++)
{jj=i*n+j;p[jj]=q[jj];
for(kk=0;kk<=n-1;kk++)
p[jj]=p[jj]+f[i*n+kk]*a[j*l+kk];}
}
}
free(e);free(a);free(b);
return(js);
C++实现代码如下:
=============================================
//:interfaceforthekalmanclass.
//
//////////////////////////////////////////////////////////////////////
#if!defined(AFX_KALMAN_H—ED3D740F_01D2_4616_8B74_8BF57636F2C0—IN
CLUDED_)
#defineAFX_KALMAN_H—ED3D740F_01D2_4616_8B74_8BF57636F2C0—INCLUDED_
#if_MSC_VER>1000
#pragmaonce
#endif//_MSC_VER>1000
#include<>
#include""classkalman
{
public:
voidinit_kalman(intx,intxv