C语言实现的滑动平均滤波算法
最近采集压力传感器的电压信号,采集到的数据波动挺大的,所以采用滤波的方法进行处理一下。
因为在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;}elseif(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函数相比。
就讲到这里吧,如果有问题可以在评论区留言,希望能够对大家有用,谢谢大家观看。
C语言实现的滑动平均滤波算法相关推荐
- C 语言实现的滑动平均滤波算法,滑动平均滤波算法(递推平均滤波法)
/// ///滑动平均滤波算法(递推平均滤波法) /// /// /// GN为数组value_buf[]的元素个数,该函数主要被调用,利用参数的数组传值 /// private const int ...
- 滑动平均滤波算法——MATLAB实现
算法原理 滑动平均滤波算法的基本思想是设定一个宽度固定的滑动窗口,该窗口沿着时间序列滑动,同时取窗内数据的算术平均值作为输出值,而由输出值组成另一个数字序列,也就是滤波后的序列.设N为滑动窗口的宽度, ...
- 算法学习笔记之滑动平均滤波算法
滑动平均滤波算法只采样一次,将一次采样值和过去的若干次采样值一起求平均,得到的有效采样值即可投入使用.如果取N个采样值求平均,存储区中必须开辟N个数据的暂存区.每新采集一个数据便存入暂存区中,同时去掉 ...
- [MATLAB学习]:Matlab生成滑动平均滤波算法文件并移植到STM32单片机上运行——基于CubeMX
前言 人生如逆旅,我亦是行人. 今天分享一个在 MATLAB 上生成C算法文件,并将其移植到 keil5上,运行至 STM32 单片机,一个很有用的方法. 准备工作: 已安装 MATLAB 的软件(注 ...
- 数字滤波算法(一)——滑动平均滤波算法
一.数字滤波器简介 数字滤波器是指通过一定的数据逻辑构成的可以滤除输入信号中的特定的噪声的算法,这里所指的数字滤波器主要包括平均值滤波.FIR滤波.CIC滤波等,在之后的实验中,我们将介绍不同数字滤波 ...
- 嵌入式–滑动平均滤波算法
嵌入式–滑动平均滤波 滑动平均值滤波是指先在RAM中建立一个数据缓冲区,依顺序存放N个采样数据,每采进一个新数据,就将最早采集的那个数据丢掉,而后求包括新数据在内的N个数据的算术平均值.这样,每进 ...
- 利用FFT分析比较卡尔曼滤波算法、低通滤波算法、滑动平均滤波的频谱
1 卡尔曼滤波 详见博客 https://blog.csdn.net/moge19/article/details/81750731 2 低通滤波 2.1 算法推导 一阶RC滤波器的硬件电路如图: 图 ...
- 【嵌入式算法】滑动平均滤波法
算数平均滤波需要多次采样后才能得出一个有效值,如果被检测量变化较快,多次采样后才输出一次有效值,表现就是系统反应迟钝.将当前采样值与之前连续的历史采样值进行平均,这样每次采样结束即可得出有效值.因为参 ...
- 滑动平均滤波_单片机数字滤波算法如何实现?(附代码)
关注.星标公众号,直达精彩内容ID:技术让梦想更伟大整理:李肖遥 单片机主要作用是控制外围的器件,并实现一定的通信和数据处理.但在某些特定场合,不可避免地要用到数学运算,尽管单片机并不擅长实现算法和进 ...
最新文章
- 在Red Hat Linux5下构建LAMP网站服务平台之MySQL、PHP的安装与配置
- 【风控建模】风控分类模型种类(决策、排序)比较与模型评估体系(ROC/gini/KS/lift)
- 拓展欧几里得模板/求逆元模板(java)
- 满分最优解法:1007 素数对猜想 (20分)
- 【莫比乌斯反演】10.30破译密码
- 泸州田家炳中学2021高考成绩查询,2021年泸州中考线出来了吗
- HugeGraph 图数据库常见问题汇总
- 中国人民大学教授杜小勇:One Size Does not Fit All?
- Bzoj 1901: Zju2112 Dynamic Rankings 主席树,可持久,树状数组,离散化
- 计算机网络相关的知识,计算机网络相关知识整理
- 【解决方案】pytorch中loss变成了nan | 神经网络输出nan | MSE 梯度爆炸/梯度消失
- 安卓传感器全解:注册、注销传感器、监听传感器,距离传感器、方向传感器、陀螺仪、加速计、磁场、气压传感器
- Android调用.net的webservice服务器接收参数为空的情况
- 京东方班单片机和c语言,pic单片机c语言程序设计14.pdf
- AMI与HDB3的matlab实现
- win2012部署asp网站相关
- ECCV 2020 best paper: RAFT算法解析
- Mac下Aria2加速各种网盘下载,你值得拥有!
- WiFi温湿度传感器开发
- 不容错过的精美的树形表格treegrid在项目里面使用总结
热门文章
- 斯坦福大学计算机科学的研究成果,美国斯坦福大学Leonidas Guibas教授做客青岛校区作学术报告...
- 必看!这八则故事教会你如何理财!
- matlab怎么排列一群变量,添加、删除和重新排列表变量
- 中国智能材料市场供需分析及投资战略研究报告2022-2028年
- 基于支持虚拟安全架构策略的SDN / NFV的5G接入网络
- php 处理上百万条的数据库如何提高处理查询速度
- docker搭建pxc
- 为Solaris服务器配置款安全的防火墙
- 【无人船】基于模型预测控制(MPC)对USV进行自主控制(Matlab代码实现)
- Android 输入框(EditText)的输入限制,数字英文邮箱,可见\隐藏切换,踩过的坑!