{
for(i=0i<10i++)
这里多了一个花括号也能运行?
[KEST,L,P=卡尔曼(SYS,青年,护士,NN)
卡尔曼滤波器的信号模型
X(K)=
A
*
X(k-1)+
W(K)
/>
Y(K)=
C
*
X(K)+
V(K)
W和V上的两个W和V
E
{WW“
}
=
E
{VV'}
=
RN,测量噪声的协方差矩阵
E
{WV'}
=
NN,这一下应该从字面上相互系统的噪声和观测噪声的协方差矩阵
白噪声均值为0,所以上述的几个值?的自相关和互相关函数
系统给定的系统模型
#include "stdlib.h" #include "rinv.c" 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=0i<=n-1i++) for (j=0j<=n-1j++){ ii=i*l+ja[ii]=0.0 for (kk=0kk<=n-1kk++)a[ii]=a[ii]+p[i*n+kk]*f[j*n+kk] }for (i=0i<=n-1i++) for (j=0j<=n-1j++){ ii=i*n+jp[ii]=q[ii] for (kk=0kk<=n-1kk++)p[ii]=p[ii]+f[i*n+kk]*a[kk*l+j] }for (ii=2ii<=kii++) { for (i=0i<=n-1i++)for (j=0j<=m-1j++) { jj=i*l+ja[jj]=0.0 for (kk=0kk<=n-1kk++) a[jj]=a[jj]+p[i*n+kk]*h[j*n+kk] }for (i=0i<=m-1i++)for (j=0j<=m-1j++) { jj=i*m+je[jj]=r[jj] for (kk=0kk<=n-1kk++) e[jj]=e[jj]+h[i*n+kk]*a[kk*l+j] }js=rinv(e,m) if (js==0) { free(e)free(a)free(b)return(js)}for (i=0i<=n-1i++)for (j=0j<=m-1j++) { jj=i*m+jg[jj]=0.0 for (kk=0kk<=m-1kk++) g[jj]=g[jj]+a[i*l+kk]*e[j*m+kk] }for (i=0i<=n-1i++) { jj=(ii-1)*n+ix[jj]=0.0 for (j=0j<=n-1j++) x[jj]=x[jj]+f[i*n+j]*x[(ii-2)*n+j] }for (i=0i<=m-1i++) { jj=i*lb[jj]=y[(ii-1)*m+i] for (j=0j<=n-1j++) b[jj]=b[jj]-h[i*n+j]*x[(ii-1)*n+j] }for (i=0i<=n-1i++) { jj=(ii-1)*n+i for (j=0j<=m-1j++) x[jj]=x[jj]+g[i*m+j]*b[j*l] }if (ii<k) { for (i=0i<=n-1i++)for (j=0j<=n-1j++) { jj=i*l+ja[jj]=0.0 for (kk=0kk<=m-1kk++) a[jj]=a[jj]-g[i*m+kk]*h[kk*n+j] if (i==j) a[jj]=1.0+a[jj] }for (i=0i<=n-1i++)for (j=0j<=n-1j++) { jj=i*l+jb[jj]=0.0 for (kk=0kk<=n-1kk++) b[jj]=b[jj]+a[i*l+kk]*p[kk*n+j] }for (i=0i<=n-1i++)for (j=0j<=n-1j++) { jj=i*l+ja[jj]=0.0 for (kk=0kk<=n-1kk++) a[jj]=a[jj]+b[i*l+kk]*f[j*n+kk] }for (i=0i<=n-1i++)for (j=0j<=n-1j++) { jj=i*n+jp[jj]=q[jj] for (kk=0kk<=n-1kk++) p[jj]=p[jj]+f[i*n+kk]*a[j*l+kk] } } }free(e)free(a)free(b) return(js) }