中值滤波是一种非线性数字滤波器技术,经常用于去除图像或者其它信号中的噪声。这个设计思想就是检查输入信号中的采样并判断它是否代表了信号,使用奇数个采样组成的观察窗实现这项功能。观察窗口中的数值进行排序,位于观察窗中间的中值作为输出。然后,丢弃最早的值,取得新的采样,重复上面的计算过程。

参考论文:

https://wenku.baidu.com/view/2d1bbb31a1c7aa00b42acb66.html

中值滤波的优点是计算速度快,适合实时性要求高的情况。同时效果明显。

以下都提到了中值滤波器的优点和特点。可供参考。

https://wenku.baidu.com/view/300d260590c69ec3d5bb75b4.html

https://wenku.baidu.com/view/51a16fef5ef7ba0d4a733b37.html?sxts=1549959306588

https://wenku.baidu.com/view/cbaf857076c66137ee0619de.html?rec_flag=default

一种实用的去基线漂移滤波算法_朱伟芳

https://wenku.baidu.com/view/85c6b46fb9d528ea80c7797d.html?from=search

ecg1=load('D:\test.xls');

L=length(ecg1);

W=501;

matlab在数组中取前n项数方法

假设H为一个一维向量,其中元素个数为n,
则提取向量H的前n-1个元素的方式,是:H(1:length(H)-1);

以下是C语言代码,可以使用。原始数据在d盘test.xls里面。运行后保存成d盘testPiaoAfter.xls.

#include <stdio.h>
#include <stdlib.h>#define L 19680
#define BUF_LEN 19680
static float buffer_BL[BUF_LEN];//基线拟合
static float buffer_out[BUF_LEN];//原始数据
static float buffer_3[BUF_LEN];//滤波后数据#define BUF_W_LEN 501
static float buffer_W[BUF_W_LEN];//中值漂移滤波缓存区窗
static float buffer_2[BUF_LEN + BUF_W_LEN-1];//中值漂移滤波缓存区//===回调比较函数,注意数组类型和回调匹配===========
int compare_float(const void *a, const void *b)
{return (*(float *)a) - (*(float *)b);
}//一种实用的去基线漂移滤波算法_朱伟芳
//
void 中值漂移滤波()
{//1.扩展buff2;for(int i=0; i< L+BUF_W_LEN-1; i++){if(0<= i && i<= (BUF_W_LEN-1)/2) {printf("en0,i=%d\n",i);buffer_2[i]=buffer_out[0];}else if((BUF_W_LEN-1)/2 < i && i<= (L+(BUF_W_LEN+1)/2)){ printf("en1,i=%d\n",i);buffer_2[i] = buffer_out[i-((BUF_W_LEN-1)/2)];}else if((L+(BUF_W_LEN-1)/2 )<i && i<= (L+BUF_W_LEN-2)){printf("en2,i=%d\n",i);buffer_2[i] = buffer_out[L-1];}}///2排序buff2并拟合基线 .BL=median[ecg2(i):ecg2(i+W)], for(int i=0; i<L-1; i++){for (int j=0; j<BUF_W_LEN; j++){buffer_W[j]=buffer_2[i+j];  }//排序buffer_W,取中间值qsort(buffer_W, BUF_W_LEN, sizeof(buffer_W[0]), compare_float);for (int j=i; j<BUF_W_LEN; j++){//printf("buffer_W=%f\n", buffer_W[j]);}buffer_BL[i]=buffer_W[(BUF_W_LEN-1)/2];}//3.得到滤波后数据for(int i=0; i<L-1; i++){buffer_3[i] = buffer_out[i] - buffer_BL[i];}
}void saveData(){FILE* fd = fopen("D:\\testPiaoAfter.xls","w+");if(fd){int i=0;while(1){fprintf(fd,"%f\t",buffer_3[i]);i++;if(i> BUF_LEN-1) break;}fclose(fd);}
}void loadData()
{FILE* fd = fopen("D:\\test.xls","r+");if(fd){int i=0;while(1){fscanf(fd,"%f\t",&buffer_out[i]);printf("buffer_out[%d]=%f\n", i,buffer_out[i]);i++;if(i> BUF_LEN-1) break;}fclose(fd);}
}int main(void)
{printf("inmain");loadData();中值漂移滤波();saveData();printf("inmain is ok");while(1){};return 0;
}

原始数据波形图:

过滤后的波形:

可以使用在实时性强的地方,但是由于没有做优化,占用内存比较大。有待优化。

心电 基线漂移的处理研究论文相关推荐

  1. 如何将深度学习研究论文实现为代码的几个要点

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:Bipin Krishnan P 编译:ronghuaiyang 导读 如果深度学习是一种超能力 ...

  2. 68页PPT教你撰写一篇优秀的机器学习研究论文!

    来源:新智元 本文共多图,建议阅读15分钟. 本文从研究人员.审稿人和读者的角度来探讨优秀论文的写作过程,值得细细品味. [ 导读 ]近期,Deepmind 和纽约大学研究科学家一起作了一场关于如何撰 ...

  3. 【Paper】研究论文不会写?先来学学怎么做西红柿炒鹌鹑蛋吧!

    作者最近刚完成第一篇文章的初稿,拜读<The Elements of Style>和<The Craft of Research>这两本书,发现书中讲的东西好像都似曾相识. 如 ...

  4. qt最大化和还原实现_从高被引研究论文来看电催化CO2还原研究进展

    近年来,将CO2催化转化为高附加值化学燃料(如CO,甲酸,甲醇,乙醇等)是催化和能源领域的研究热点.CO2还原这些年的发文量非常大,笔者课题为电催化CO2RR,很好奇自己研究方向哪些研究论文成为高被引 ...

  5. 计算机课程教改论文,高职计算机教改的课程设计研究论文

    高职计算机教改的课程设计研究论文 如今越来越多的学生涌入到高职院校学习,其中计算机属于最受学生欢迎的专业.计算机专业需要学生掌握计算机软硬件基础知识.操作技能等.然而由于传统计算机课程教学方法难以促使 ...

  6. c#养老院老人信息管理系统源码 论文_我市“老年人关爱服务体系建设”专题研究论文荣获第五届青年学者老龄论坛特等奖_社会民生_新闻频道...

    10月31日,由省老龄委(老年学会)举办的第七届研究生老龄论坛.第五届青年学者老龄论坛暨首届长三角青年老龄论坛,在无锡江南大学举行.应邀参加论坛的我市"长寿星养老"服务中心总监陈海 ...

  7. 计算机与管理科学的交叉与融合,计算机信息管理学科交叉融合研究论文

    计算机信息管理学科交叉融合研究论文 计算机信息管理专业本身就是一个多学科交叉融合的专业,涉及经济学.管理学.信息技术.网络技术等多门学科.该专业的人才培养目标是为社会主义现代化建设提供具备扎实理论知识 ...

  8. apa引用要在文中吗_如何在研究论文中引用文献

    欢迎点击「云麦」↑关注我们! 本文主要介绍四类研究论文的引用方式:使用不同的引用方式 引用句式 不同格式 成功引用 方法一.使用不同的引用方式 研究论文需要引证.需要通过他人的作品论证自己的观点的时候 ...

  9. 我国对计算机科学与技术专业人才社会需求,浅谈计算机科学与技术专业应用技术型人才的培养研究论文...

    浅谈计算机科学与技术专业应用技术型人才的培养研究论文 培养应用型专业技术人才是我国高等教育的重要任务,目前我国社会和经济的发展对于,应用技术型人才的需求在不断提升.因此高校在进行计算机专业应用技术人才 ...

最新文章

  1. axios 登录后设置header_axios如何利用promise无痛刷新token
  2. python中二维数组如何按索引找元素_按索引或坐标访问二维数组中的元素
  3. 华为 泰山 服务器 操作系统安装,华为Taishan服务器安装CentOS7操作系统
  4. 关于Anaconda的环境和包管理
  5. python代理charles_Mitmproxy + Python 做拦截代理
  6. oc - NSArray基础用法总结
  7. MySQL:给表建立索引及索引的显示
  8. 注释不能自动设置时间_微波炉维修|微波炉能加热食品,但是到了设定时间,不能自动断电。...
  9. 三菱PLC史上最全视频教程!(视频+数据+例程)
  10. FLV在线flash播放器JW PLAYER
  11. 2021-5月14日-今日收获
  12. 鸿蒙桌面系统什么时候上线,鸿蒙OS全新PC桌面模式即将上线?回顾一下手机桌面系统的发展历程...
  13. 电脑的视频太大,如何压缩视频
  14. python下载西瓜视频2020最新思路
  15. 抖音小店入驻条件及费用,2021个人开通抖音小店条件
  16. android 8.0 屏蔽首次开机弹出的‘即将完成 Android 更新’的弹窗
  17. 小米汽车发售,竟然不到5000元,年轻人的第一辆汽车!
  18. 未来十年,互联网行业到底需要什么样的运营?
  19. C语言:输入某一年的第几天,计算并输出它是这一年的第几月第几日?
  20. 一元线性回归模型的原理及实现

热门文章

  1. app常见的专项测试以及面试题
  2. top 命令参数使用说明
  3. 第三代战斗机的特点有哪些
  4. FileReader的使用方法
  5. Java代理模式作用
  6. Metis异常检测初体验
  7. java字符串正序倒序连接_java字符串实现正序和倒序输出
  8. 专业技术职务代码-GBT8561-2001
  9. java实现多张图片同时上传
  10. 你知道Java程序猿工资有多少吗?