测试卡尔曼滤波器(Kalman Filter)

时间:2022-05-27 23:32:22

真实的温度测试数据,通过加热棒加热一盆水测得的真实数据,X轴是时间秒,Y轴是温度:

1)滤波前

测试卡尔曼滤波器(Kalman Filter)

2)滤波后(p=10, q=0.0001, r=0.05, kGain=0;)

测试卡尔曼滤波器(Kalman Filter)

2)滤波后(p=10, q=0.00001, r=1, kGain=0;),Y轴放大10倍并取整

测试卡尔曼滤波器(Kalman Filter)

 

相关C语言代码:

#define LINE 1024

static float prevData=0;
static float p=10, q=0.0001, r=0.05, kGain=0; float kalmanFilter(float inData)
{ p = p+q;
kGain = p/(p+r); inData = prevData+(kGain*(inData-prevData));
p = (1-kGain)*p; prevData = inData; return inData;
} char *ReadData(FILE *fp, char *buf)
{
return fgets(buf, LINE, fp);
} int main()
{
FILE *fp, *fp2;
char *p, *buf;
size_t len = 0;
ssize_t read;
float inData[1000];
float outData[1000];
uint32_t i,cnt=0; fp = fopen("d2.txt", "r");
if (fp==NULL)
exit(1); buf = (char*)malloc(LINE*sizeof(char));
p=ReadData(fp, buf); while(p) {
inData[cnt]=atof(p);
cnt++;
p=ReadData(fp,buf);
} fclose(fp); for(i=0;i<cnt;i++)
outData[i]=kalmanFilter(inData[i]);
} fp2 = fopen("d3.txt", "w");
for(i=0;i<cnt;i++)
fprintf(fp2, "%f\n",outData[i]);
}
fclose(fp2); }

matlab代码:

d2 = load('d2.txt');
plot(d2); prevData=0.0;
p=10;
q=0.0001;
r=0.05;
kGain=0;
outData=[]; for i=1:length(d2)
p=p+q;
kGain=p/(p+r);
temp=d2(i);
temp=prevData+(kGain*(temp-prevData));
p=(1-kGain)*p;
prevData=temp;
outData(i)=temp;
end plot(outData);

说明:d2.txt存放的是输入的数据,每行一个。d3是输出的数据。

 

r参数调整滤波后的曲线与实测曲线的相近程度,r越小越接近。

q参数调滤波后的曲线平滑程度,q越小越平滑。

测试卡尔曼滤波器(Kalman Filter)的更多相关文章

  1. 卡尔曼滤波器 Kalman Filter &lpar;转载&rpar;

    在学习卡尔曼滤波器之前,首先看看为什么叫“卡尔曼”.跟其他著名的理论(例如傅立叶变换,泰勒级数等等)一样,卡尔曼也是一个人的名字,而跟他们不同的是,他是个现代人! 卡 尔曼全名Rudolf Emil ...

  2. &lbrack;转载&rsqb;卡尔曼滤波器及其基于opencv的实现

    卡尔曼滤波器及其基于opencv的实现 源地址:http://hi.baidu.com/superkiki1989/item/029f65013a128cd91ff0461b 这个是*中的链接, ...

  3. 时间序列八&colon; 以NASA之名&colon; 卡尔曼滤波器

    目录 以NASA之名: 卡尔曼滤波器 引言 荣耀骑士 卡尔曼滤波器* 参考文献: 以NASA之名: 卡尔曼滤波器 'That's one small step for man,one giant le ...

  4. kalman filter卡尔曼滤波器- 数学推导和原理理解-----网上讲的比较好的kalman filter和整理、将预测值和观测值融和

    = 参考/转自: 1 ---https://blog.csdn.net/u010720661/article/details/63253509 2----http://www.bzarg.com/p/ ...

  5. &lbrack;Math&rsqb;理解卡尔曼滤波器 &lpar;Understanding Kalman Filter&rpar; zz

    1. 卡尔曼滤波器介绍 卡尔曼滤波器的介绍, 见 Wiki 这篇文章主要是翻译了 Understanding the Basis of the Kalman Filter Via a Simple a ...

  6. &lbrack;Math&rsqb;理解卡尔曼滤波器 &lpar;Understanding Kalman Filter&rpar;

    1. 卡尔曼滤波器介绍 卡尔曼滤波器的介绍, 见 Wiki 这篇文章主要是翻译了 Understanding the Basis of the Kalman Filter Via a Simple a ...

  7. 卡尔曼滤波器【Kalman Filter For Dummies】

    搬砖到此: A Quick Insight     As I mentioned earlier, it's nearly impossible to grasp the full meaning o ...

  8. 对Kalman&lpar;卡尔曼&rpar;滤波器的理解

    1.简单介绍(Brief Introduction) 在学习卡尔曼滤波器之前,首先看看为什么叫"卡尔曼". 跟其它著名的理论(比如傅立叶变换.泰勒级数等等)一样.卡尔曼也是一个人的 ...

  9. 对Kalman&lpar;卡尔曼&rpar;滤波器的理解&commat;&commat;zz

    1.简介(Brief Introduction) 在学习卡尔曼滤波器之前,首先看看为什么叫“卡尔曼”.跟其他著名的理论(例如傅立叶变换,泰勒级数等等)一样,卡尔曼也是一个人的名字,而跟他们不同的是,他 ...

随机推荐

  1. anible包模块管理

    ansible使用包管理模块 一般使用的包管理模块的RPM,和YUM 参数 必填 默认 选择 说明 Conf_file No YUM的配置文件 Disable_dbg_check No No Yes/ ...

  2. Linux下安装Nginx1&period;9&period;3-0303&lpar;本人亲手实践&rpar;

    Linux下安装Nginx1.9.3 Linux操作系统 Oel 5.8 64bit 最新版Nginx: 1.9.3 最近同事让我帮忙搞 ngix,两天时间 安装.配置搞定了.继续 Nginx 1.9 ...

  3. 力挺8天入门wpf【转载】

    8天入门wpf—— 第八天 最后的补充 摘要: 从这一篇往前看,其实wpf中还有很多东西没有讲到,不过我的原则还是将比较常用的知识点过一遍,如果大家熟悉了这些知识,基本功也就打的差不多了,后续可以等待 ...

  4. j2ee tomcat 部署学习

    J2EE基础实例demo http://www.cnblogs.com/javabin/p/3809954.html J2EE 数据库JDBC(Java Data Base Connectivity, ...

  5. Jquery 文字上下滚动效果示例代码

      <!doctype html>   <html>   <head>   <meta charset="utf-8">       ...

  6. Python实现采集wordpress整站数据的爬虫

    最近爱上了python,就非常喜欢使用python来练手,在上次的基础上完善一下代码,实现采集wordpress程序的网站的整站数据的爬虫程序,本站也是采用的wordpress,我就拿吾八哥网(htt ...

  7. HashMap与ConcurrentHashMap

    从JDK1.2起,就有了HashMap,正如前一篇文章所说,HashMap不是线程安全的,因此多线程操作时需要格外小心. 在JDK1.5中,伟大的Doug Lea给我们带来了concurrent包,从 ...

  8. JAVA死锁

    死锁是这样一种情形:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放.由于线程被无限期地阻塞,因此程序不能正常运行. 简单的说就是:线程死锁时,第一个线程等待第二个线程释放资源,而同时第 ...

  9. iOS开发之微信平台分享

    在工程开始之前应该先准备在微信开放平台申请的appid,从微信平台下载sdk文件.下面开始步骤讲述 1.先将SDK导入工程目录 2.在info.plist文件设置相关信息,包括appid标识.白名单 ...

  10. html框架以及属性字体应用

    今日java开课,下午老师讲解了java的第一节课,有关于html的框架,为了自己方便以后也会在日记中添加一些便签方便自己使用. 了解这一些之后老师发布的作业也让我对码代码有了更深的认知,码完作业之后 ...