C语言卡尔曼滤波算法求教

Python020

C语言卡尔曼滤波算法求教,第1张

Optimal_value = 23 //上次最优值,根据环境开始可以随便设一个大概的数

{

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“

}

=

QN,这是系统噪声协方差矩阵

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) }