C语言实现的滑动平均滤波算法
来源:互联网 发布:淘宝大学 老师 编辑:程序博客网 时间:2024/06/01 20:02
最近采集压力传感器的电压信号,采集到的数据波动挺大的,所以采用滤波的方法进行处理一下。
因为在matlab中依靠matlab的画图函数很容易看到滤波后的数据图像,进而验证滤波效果。
所以首先将采集到的原始数据保存到TXT文档里面,然后导入到matlab中,在matlab中对数据进行滤波。
在matlab中采用了三种滤波方法:1、滑动平均滤波 2、中值滤波 3、卡尔曼滤波
在对比了三种滤波之后的图像之后,选择了第一种滑动平均滤波的方法。在matlab中有专门的函数:smooth(变量),但是我们要用C语言实现这个功能。
我依据滑动平均滤波的原理进行了程序编写,对于数据开始部分和结尾部分做了一些改变,得到的滤波效果还不错,与matlab的滤波效果差异很小。
话不多说,上代码:
#define size 6000//数组大小#define N 12//滑动平均滤波计算平均值时所取的点数/*上面两句在使用下面这个函数的时候加到程序的开头*/void Smooth(float data[]){ Sum1=0; for(int j=0;j<size;j++) { if(j<N/2) { for(int k=0;k<N;k++) { Sum1+=data[j+k]; } data[j]=Sum1/N; } else if(j<size -N/2) { for(int k=0;k<N/2;k++) { Sum1+=(data[j+k]+data[j-k]); } data[j]=Sum1/N; } else { for(int k=0;k<size-j;k++) { Sum1+=data[j+k]; } for(int k=0;k<(N-size+j);k++) { Sum1+=data[j-k]; } data[j]=Sum1/N; } Sum1=0; }}
这是我根据我写的滑动平均算法做了点改动,下面看看滤波效果图
蓝色的线是原始数据图像,红色的线是滤波之后的数据图像
这张图中红色的是原始数据图像,绿色的线是matlab自带的smooth函数滤波之后的图像,蓝色的线是我自己用C语言写的滤波算法滤波之后的数据图像,都是滤波20次。
可以看出这个移动平均滤波算法能够达到要求,并且可以和matlab中的smooth函数相比。
就讲到这里吧,如果有问题可以在评论区留言,希望能够对大家有用,谢谢大家观看。
阅读全文
1 0
- C语言实现的滑动平均滤波算法
- matlab实现滑动平均滤波(一)
- matlab实现滑动平均滤波(二)
- 算法学习笔记之滑动平均滤波算法
- 算法学习笔记之滑动平均滤波算法
- 简单常用滤波算法C语言实现
- 简单常用滤波算法C语言实现
- 简单常用滤波算法C语言实现
- 【滤波算法】【C语言】(二)标量Kalman滤波的过程分析和证明及C实现
- Kalman滤波的C语言实现
- 关于中值滤波算法,以及C语言实现
- 卡尔曼滤波算法及C语言实现
- 关于中值滤波算法,以及C语言实现
- 关于中值滤波算法,以及C语言实现
- 关于中值滤波算法,以及C语言实现
- 关于中值滤波算法,以及C语言实现
- 关于中值滤波算法,以及C语言实现
- 最小值滤波 (C 语言实现)
- 字节(内存)对齐
- openshift/origin学习记录(9)——S2I镜像定制(基于Git)
- JAVA基础--线程池、基本类型
- 宝瓷林1728的由来和唐英当年治理景德镇有关
- 发布dubbo服务
- C语言实现的滑动平均滤波算法
- axis开发的返回自定义bean
- 大白菜u盘启动盘清除系统登录密码详细教程
- 关系型数据库+NoSQL(非关系型数据库)+HBase+Hive 区别与联系
- 各位大神,这个该如何变成多客户端连接服务器,求代码
- 第四周 项目三-单链表应用 3.
- 浅谈GDB调试在信息学竞赛中的应用
- RecyclerView中嵌套RecyclerView导致自动滚动
- Spring data Repository