用c语言实现数字滤波

用c语言实现数字滤波

ID:9061805

大小:31.50 KB

页数:4页

时间:2018-04-16

用c语言实现数字滤波_第1页
用c语言实现数字滤波_第2页
用c语言实现数字滤波_第3页
用c语言实现数字滤波_第4页
资源描述:

《用c语言实现数字滤波》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、标题:用C语言实现数字滤波2008-05-0916:17:33在工业过程控制系统中,由于被控对象的环境比较恶劣,干扰源比较多,仪器、仪表采集的信息常会受到干扰,所以在模拟系统中,为了消除干扰,常采用RC滤波电路,而在由工业控制计算机组成的自动检测系统中,为了提高采样的可靠性,减少虚假信息的影响,常常采用数字滤波的方法。数字滤波的方法有很多种,可以根据不同的测量参数进行选择。下面给出几种常用的数字滤波方法的C语言函数,这些函数有一定的通用性,用TurboC2.0编制而成,在研华IPC-610/386机上均编译通过,适用于PC机

2、及其兼容机。1.程序判数滤波采样的信号,如因常受到随机干扰传感器不稳定而引起严重失真时,可以采用此方法。方法是:根据生产经验确定两交采样允许的最大偏差△×,若先后两次采样的信号相减数值大于△×,表明输入的是干扰信号,应该去掉;用上次采样值作为本次采样值,若小于、等于△×表明没有受到干扰,本次采样值效。该方法适用于慢变化的物理参数的采样,如温度、物理位置等测量系统。程序判断滤波的C程序函数如下:floatprogram_detect_filter(floatold_new_value[],floatX){floatsample

3、_value;if(fabs(old_new_value[1]_old_new_value[0])>X)sample_value=old_new_value[0];elsesample_value=old_new_value[1];retrun(sample_value);}函数调用需一个一维的两个元素的数组(old_new_value[2],用于存放上次采样值(old_new_value[0],)和本次采样值(old_new_value[1],),函数中sample_value表示有效采样值,X表示根据根据经验确定的两次采

4、样允许的最大偏差△×。2、中值滤波中值滤波是对某一参数连续输入N次(一般N取奇数),从中选择一个中间值作为本次采样值,若变量变化比较缓慢,采用此方法效果比较好,但对快速变化过程的参数,如流量、自然伽玛等,则不宜采用。中值滤波的C程序函数如下:floatmiddle_filter(floatmiddle_value[],intcount){floatsample_value,data;inti,j;for(i=0;i<(count-1)/2;i++)for(j=count-1;j>=I;--j){if(middle_value

5、[j-1]>middle_value[j]{data=middle_value[j-1];middle_value[j-1]=middle_value[j]middle_value[j]=data;}sample_value=middle_value[(count-1)/2];return(sample_value);}函数假设对某一参数连续采样3次,若多次采样,可对该函数稍作修改即可。3次采样值存储在数组middle_value[3],其中Sample-value表示有效采样值,count表示连续采样次数。3、滑动算术平均

6、值滤波滑动算术平均值滤波是设一循环队列,依顺序存放N次采样数据,每次数据采集时,先将放在队列中第一个最早采集的数据丢掉,再把新数据放入队尾,然后求包括新数据在内的N个数据的算术平均值,便得到该次采样的有效数据。该方法主要用于对压力、流量等周期脉动的采样值进行平滑加工处理。滑动算术平均值滤波C程序函数如下:floatmove_average_filter(floatdata_buf[],intcount){floatsample_vaue,data=0;inti;for(i=0;idata+=data_buf[i];sampl

7、e_value="/blog/data/count;return(sample_value;}函数假设顺序存放5次采样数据的数据缓冲区data_buf[5],对于多于5次的滑动算术平均滤波,只需对该函数稍作修改即可,其中sample_value表示本次采样的有效数据,count表示数据有样次数。4.滑动加权平均值滤波滑动加权平均滤波是设一个数据缓冲区依顺序存放N次采样数据,每采进一个新数据,就将最先采集的数据丢掉,而后求包括新数据在内的N个数据的加权平均值,便得到该次采样的有效数据。该方法对脉冲性干扰的平滑作用尚不理想,不适

8、用于脉冲性干扰比较严重的场合。滑动加权平均值滤波的C程序函数如下:floa"move_times_filter(floatdata_buf[]){floatsample_value;floatfilter_k[3]={0.3,0.2,0.15》;sample_value=filter_k[

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。