本篇文章给大家谈谈滤波kaermanc语言程序,以及kalman滤波算法是算什么的对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
1、C语言下的卡尔曼滤波程序,编译有错啊,比如 #include “rinv.c”这个文件在哪儿?还有整个程序没有函数体?2、我用C语言在VC上写了一个卡尔曼滤波算法,模拟检测到的十个温度值,但是不知道这样对不对,有请大侠指点3、Kalman 滤波的数学模型C语言编程问题
C语言下的卡尔曼滤波程序,编译有错啊,比如 #include “rinv.c”这个文件在哪儿?还有整个程序没有函数体?
给你“rinv.c ”
不知道是不是你要的,随便找了个数值分析算法里头的
#include “stdlib.h”
#include “math.h”
#include “stdio.h”
int rinv(n,a)
int n;
double a[];
{ int *is,*js,i,j,k,l,u,v;
double d,p;
is=malloc(n*sizeof(int));
js=malloc(n*sizeof(int));
for (k=0; k=n-1; k++)
{ d=0.0;
for (i=k; i=n-1; i++)
for (j=k; j=n-1; j++)
{ l=i*n+j; p=fabs(a[l]);
if (pd) { d=p; is[k]=i; js[k]=j;}
}
if (d+1.0==1.0)
{ free(is); free(js); printf(“err**not inv\n”);
return(0);
}
if (is[k]!=k)
for (j=0; j=n-1; j++)
{ u=k*n+j; v=is[k]*n+j;
p=a[u]; a[u]=a[v]; a[v]=p;
}
if (js[k]!=k)
for (i=0; i=n-1; i++)
{ u=i*n+k; v=i*n+js[k];
p=a[u]; a[u]=a[v]; a[v]=p;
}
l=k*n+k;
a[l]=1.0/a[l];
for (j=0; j=n-1; j++)
if (j!=k)
{ u=k*n+j; a[u]=a[u]*a[l];}
for (i=0; i=n-1; i++)
if (i!=k)
for (j=0; j=n-1; j++)
if (j!=k)
{ u=i*n+j;
a[u]=a[u]-a[i*n+k]*a[k*n+j];
}
for (i=0; i=n-1; i++)
if (i!=k)
{ u=i*n+k; a[u]=-a[u]*a[l];}
}
for (k=n-1; k=0; k–)
{ if (js[k]!=k)
for (j=0; j=n-1; j++)
{ u=k*n+j; v=js[k]*n+j;
p=a[u]; a[u]=a[v]; a[v]=p;
}
if (is[k]!=k)
for (i=0; i=n-1; i++)
{ u=i*n+k; v=i*n+is[k];
p=a[u]; a[u]=a[v]; a[v]=p;
}
}
free(is); free(js);
return(1);
}
我用C语言在VC上写了一个卡尔曼滤波算法,模拟检测到的十个温度值,但是不知道这样对不对,有请大侠指点
#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 (ln) 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]=0.0; 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; kk=n-1; kk++) p[ii]=p[ii]+f[i*n+kk]*a[kk*l+j]; } for (ii=2; ii=k; ii++) { for (i=0; i=n-1; i++) for (j=0; j=m-1; j++) { jj=i*l+j; a[jj]=0.0; for (kk=0; kk=n-1; kk++) a[jj]=a[jj]+p[i*n+kk]*h[j*n+kk]; } for (i=0; i=m-1; i++) for (j=0; j=m-1; j++) { jj=i*m+j; e[jj]=r[jj]; for (kk=0; kk=n-1; kk++) 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=0; i=n-1; i++) for (j=0; j=m-1; j++) { jj=i*m+j; g[jj]=0.0; for (kk=0; kk=m-1; kk++) g[jj]=g[jj]+a[i*l+kk]*e[j*m+kk]; } for (i=0; i=n-1; i++) { jj=(ii-1)*n+i; x[jj]=0.0; for (j=0; j=n-1; j++) x[jj]=x[jj]+f[i*n+j]*x[(ii-2)*n+j]; } for (i=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]; } if (iik) { for (i=0; i=n-1; i++) for (j=0; j=n-1; j++) { jj=i*l+j; a[jj]=0.0; for (kk=0; kk=m-1; kk++) a[jj]=a[jj]-g[i*m+kk]*h[kk*n+j]; if (i==j) a[jj]=1.0+a[jj]; } for (i=0; i=n-1; i++) for (j=0; j=n-1; j++) { jj=i*l+j; b[jj]=0.0; for (kk=0; kk=n-1; kk++) b[jj]=b[jj]+a[i*l+kk]*p[kk*n+j]; } for (i=0; i=n-1; i++) for (j=0; j=n-1; j++) { jj=i*l+j; a[jj]=0.0; 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); }
Kalman 滤波的数学模型C语言编程问题
[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,所以上述的几个值?的自相关和互相关函数;
系统给定的系统模型;
滤波kaermanc语言程序的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于kalman滤波算法是算什么的、滤波kaermanc语言程序的信息别忘了在本站进行查找喔。