2022年C语言滤波程序 .pdf
《2022年C语言滤波程序 .pdf》由会员分享,可在线阅读,更多相关《2022年C语言滤波程序 .pdf(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数字滤波常用的软件方法代码实例C语言滤波程序数字滤波常用的软件滤波方法很多,下面介绍几种常用的数字滤波方法。在微机控制系统的模拟输入信号中,一般均含有各种噪声和干扰,他们来自被测信号源本身、传感器、外界干扰等。为了进行准确测量和控制,必须消除被测信号中的噪声和干扰。噪声有2 大类:一类为周期性的,其典型代表为50 Hz 的工频干扰,对于这类信号,采用积分时间等于 20 ms整倍数的双积分A/D 转换器, 可有效地消除其影响;另一类为非周期的不规则随机信号,对于随机干扰,可以用数字滤波方法予以削弱或滤除。 所谓数字滤波, 就是通过一定的计算或判断程序减少干扰信号在有用信号中的比重,因此他实际上是
2、一个程序滤波。数字滤波器克服了模拟滤波器的许多不足,他与模拟滤波器相比有以下优点:(1)数字滤波器是用软件实现的,不需要增加硬设备,因而可靠性高、稳定性好,不存在阻抗匹配问题。(2)模拟滤波器通常是各通道专用,而数字滤波器则可多通道共享,从而降低了成本。(3)数字滤波器可以对频率很低(如 0.01 Hz)的信号进行滤波,而模拟滤波器由于受电容容量的限制,频率不可能太低。(4)数字滤波器可以根据信号的不同, 采用不同的滤波方法或滤波名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页
3、,共 12 页 - - - - - - - - - 参数,具有灵活、方便、功能强的特点。假定从 8 位 AD 中读取数据(如果是更高位的AD 可定义数据类型为int),子程序为 get_ad(); 1、限幅滤波法(又称程序判断滤波法)A、方法:根据经验判断,确定两次采样允许的最大偏差值(设为A)每次检测到新值时判断:如果本次值与上次值之差A,则本次值无效 ,放弃本次值 ,用上次值代替本次值B、优点:能有效克服因偶然因素引起的脉冲干扰C、缺点无法抑制那种周期性的干扰平滑度差限副滤波实例/* A 值可根据实际情况调整value为有效值, new_value为当前采样值滤波程序返回有效的实际值*/
4、#define A 10 char value; char filter() char new_value; new_value = get_ad(); if ( ( new_value - value A ) | ( value - new_value A ) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 12 页 - - - - - - - - - return value; return new_value; 2、中位值滤波法A、方法:连续采样 N 次(N 取奇数
5、)把 N 次采样值按大小排列取中间值为本次有效值B、优点:能有效克服因偶然因素引起的波动干扰对温度、液位的变化缓慢的被测参数有良好的滤波效果C、缺点:对流量、速度等快速变化的参数不宜中位值滤波实例/* N 值可根据实际情况调整排序采用冒泡法*/ #define N 11 char filter() char value_bufN; char count,i,j,temp; for ( count=0;countN;count+) value_bufcount = get_ad(); delay(); for (j=0;jN-1;j+) for (i=0;ivalue_bufi+1 ) 名师资料
6、总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 12 页 - - - - - - - - - temp = value_bufi; value_bufi = value_bufi+1; value_bufi+1 = temp; return value_buf(N-1)/2; 3、算术平均滤波法A、方法:连续取 N 个采样值进行算术平均运算N 值较大时:信号平滑度较高,但灵敏度较低N 值较小时:信号平滑度较低,但灵敏度较高N 值的选取:一般流量, N=12;压力: N=4 B、优
7、点:适用于对一般具有随机干扰的信号进行滤波这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动C、缺点:对于测量速度较慢或要求数据计算速度较快的实时控制不适用比较浪费 RAM 算术平均滤波法实例/* */ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 12 页 - - - - - - - - - #define N 12 char filter() int sum = 0; for ( count=0;countN;count+) sum + = get_ad(
8、); delay(); return (char)(sum/N); 4、递推平均滤波法(又称滑动平均滤波法)A、方法:把连续取 N 个采样值看成一个队列队列的长度固定为N 每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进先出原则 ) 把队列中的 N 个数据进行算术平均运算,就可获得新的滤波结果N 值的选取:流量, N=12;压力: N=4;液面, N=412;温度, N=14 B、优点:对周期性干扰有良好的抑制作用,平滑度高适用于高频振荡的系统C、缺点:灵敏度低对偶然出现的脉冲性干扰的抑制作用较差名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - -
9、 - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 12 页 - - - - - - - - - 不易消除由于脉冲干扰所引起的采样值偏差不适用于脉冲干扰比较严重的场合比较浪费 RAM #define N 12 char value_bufN; char i=0; char filter() char count; int sum=0; value_bufi+ = get_ad(); if ( i = N ) i = 0; for ( count=0;countN,count+) sum = value_bufcount; return (char)(sum/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年C语言滤波程序 2022 语言 滤波 程序
限制150内