(整理)11种滤波方法+范例代码.

合集下载

滤波算法举例word精品文档19页

滤波算法举例word精品文档19页

滤波算法十一种通用滤波算法1、限幅滤波法(又称程序判断滤波法)A、方法:根据经验判断,确定两次采样允许的最大偏差值(设为A)每次检测到新值时判断:如果本次值与上次值之差<=A,则本次值有效如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值B、优点:能有效克服因偶然因素引起的脉冲干扰C、缺点无法抑制那种周期性的干扰平滑度差2、中位值滤波法A、方法:连续采样N次(N取奇数)把N次采样值按大小排列取中间值为本次有效值B、优点:能有效克服因偶然因素引起的波动干扰对温度、液位的变化缓慢的被测参数有良好的滤波效果C、缺点:对流量、速度等快速变化的参数不宜3、算术平均滤波法A、方法:连续取N个采样值进行算术平均运算N值较大时:信号平滑度较高,但灵敏度较低N值较小时:信号平滑度较低,但灵敏度较高N值的选取:一般流量,N=12;压力:N=4B、优点:适用于对一般具有随机干扰的信号进行滤波这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动C、缺点:对于测量速度较慢或要求数据计算速度较快的实时控制不适用比较浪费RAM4、递推平均滤波法(又称滑动平均滤波法)A、方法:把连续取N个采样值看成一个队列队列的长度固定为N每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进先出原则)把队列中的N个数据进行算术平均运算,就可获得新的滤波结果N值的选取:流量,N=12;压力:N=4;液面,N=4~12;温度,N=1~4 B、优点:对周期性干扰有良好的抑制作用,平滑度高适用于高频振荡的系统C、缺点:灵敏度低对偶然出现的脉冲性干扰的抑制作用较差不易消除由于脉冲干扰所引起的采样值偏差不适用于脉冲干扰比较严重的场合比较浪费RAM5、中位值平均滤波法(又称防脉冲干扰平均滤波法)A、方法:相当于“中位值滤波法”+“算术平均滤波法”连续采样N个数据,去掉一个最大值和一个最小值然后计算N-2个数据的算术平均值N值的选取:3~14B、优点:融合了两种滤波法的优点对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差C、缺点:测量速度较慢,和算术平均滤波法一样比较浪费RAM6、限幅平均滤波法A、方法:相当于“限幅滤波法”+“递推平均滤波法”每次采样到的新数据先进行限幅处理,再送入队列进行递推平均滤波处理B、优点:融合了两种滤波法的优点对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差C、缺点:比较浪费RAM7、一阶滞后滤波法A、方法:取a=0~1本次滤波结果=(1-a)*本次采样值+a*上次滤波结果B、优点:对周期性干扰具有良好的抑制作用适用于波动频率较高的场合C、缺点:相位滞后,灵敏度低滞后程度取决于a值大小不能消除滤波频率高于采样频率的1/2的干扰信号8、加权递推平均滤波法A、方法:是对递推平均滤波法的改进,即不同时刻的数据加以不同的权通常是,越接近现时刻的数据,权取得越大。

几种滤波算法

几种滤波算法

一.十一种通用滤波算法(转)1、限幅滤波法(又称程序判断滤波法)A、方法:根据经验判断,确定两次采样允许的最大偏差值(设为A)每次检测到新值时判断:如果本次值与上次值之差<=A,则本次值有效如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值B、优点:能有效克服因偶然因素引起的脉冲干扰C、缺点无法抑制那种周期性的干扰平滑度差2、中位值滤波法A、方法:连续采样N次(N取奇数)把N次采样值按大小排列取中间值为本次有效值B、优点:能有效克服因偶然因素引起的波动干扰对温度、液位的变化缓慢的被测参数有良好的滤波效果C、缺点:对流量、速度等快速变化的参数不宜3、算术平均滤波法A、方法:连续取N个采样值进行算术平均运算N值较大时:信号平滑度较高,但灵敏度较低N值较小时:信号平滑度较低,但灵敏度较高N值的选取:一般流量,N=12;压力:N=4适用于对一般具有随机干扰的信号进行滤波这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动C、缺点:对于测量速度较慢或要求数据计算速度较快的实时控制不适用比较浪费RAM4、递推平均滤波法(又称滑动平均滤波法)A、方法:把连续取N个采样值看成一个队列队列的长度固定为N每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进先出原则) 把队列中的N个数据进行算术平均运算,就可获得新的滤波结果N值的选取:流量,N=12;压力:N=4;液面,N=4~12;温度,N=1~4 B、优点:对周期性干扰有良好的抑制作用,平滑度高适用于高频振荡的系统C、缺点:灵敏度低对偶然出现的脉冲性干扰的抑制作用较差不易消除由于脉冲干扰所引起的采样值偏差不适用于脉冲干扰比较严重的场合比较浪费RAM5、中位值平均滤波法(又称防脉冲干扰平均滤波法)A、方法:相当于“中位值滤波法”+“算术平均滤波法”连续采样N个数据,去掉一个最大值和一个最小值然后计算N-2个数据的算术平均值N值的选取:3~14融合了两种滤波法的优点对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差C、缺点:测量速度较慢,和算术平均滤波法一样比较浪费RAM6、限幅平均滤波法A、方法:相当于“限幅滤波法”+“递推平均滤波法”每次采样到的新数据先进行限幅处理,再送入队列进行递推平均滤波处理B、优点:融合了两种滤波法的优点对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差C、缺点:比较浪费RAM7、一阶滞后滤波法A、方法:取a=0~1本次滤波结果=(1-a)*本次采样值+a*上次滤波结果B、优点:对周期性干扰具有良好的抑制作用适用于波动频率较高的场合C、缺点:相位滞后,灵敏度低滞后程度取决于a值大小不能消除滤波频率高于采样频率的1/2的干扰信号8、加权递推平均滤波法A、方法:是对递推平均滤波法的改进,即不同时刻的数据加以不同的权通常是,越接近现时刻的数据,权取得越大。

(整理)几种滤波的经典算法

(整理)几种滤波的经典算法
连续采样N个数据,去掉一个最大值和一个最小值
然后计算N-2个数据的算术平均值
N值的选取:3~14
B、优点:
融合了两种滤波法的优点
对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差
C、缺点:
测量速度较慢,和算术平均滤波法一样
比较浪费RAM
6、限幅平均滤波法
A、方法:
相当于“限幅滤波法”+“递推平均滤波法”
适用于波动频率较高的场合
C、缺点:
相位滞后,灵敏度低
滞后程度取决于a值大小
不能消除滤波频率高于采样频率的1/2的干扰信号
8、加权递推平均滤波法
A、方法:
是对递推平均滤波法的改进,即不同时刻的数据加以不同的权
通常是,越接近现时刻的数据,权取得越大。
给予新采样值的权系数越大,则灵敏度越高,但信号平滑度越低
几种经典的滤波算法(转)
1、限幅滤波法(又称程序判断滤波法)
A、方法:
根据经验判断,确定两次采样允许的最大偏差值(设为A)
每次检测到新值时判断:
如果本次值与上次值之差<=A,则本次值有效
如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值
B、优点:
能有效克服因偶然因素引起的脉冲干扰
N值较大时:信号平滑度较高,但灵敏度较低
N值较小时:信号平滑度较低,但灵敏度较高
N值的选取:一般流量,N=12;压力:N=4
B、优点:
适用于对一般具有随机干扰的信号进行滤波
这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动
C、缺点:
对于测量速度较慢或要求数据计算速度较快的实时控制不适用
比较浪费RAM

10种软件滤波方法及示例程序

10种软件滤波方法及示例程序

10种软件滤波方法及示例程序滤波是数字信号处理中常用的一种方法,用于去除信号中的噪声或者改变信号的频率响应。

软件滤波是指使用计算机软件来实现滤波功能。

本文将介绍10种常用的软件滤波方法,并附上相应的示例程序。

1.均值滤波:将信号中的每个样本点都替换为其邻近样本点的平均值。

这种方法适用于去除高频噪声,但会导致信号的模糊化。

示例程序:```pythonimport numpy as npdef mean_filter(signal, window_size):filtered_signal = []for i in range(len(signal)):start = max(0, i - window_size//2)end = min(len(signal), i + window_size//2)filtered_signal.append(np.mean(signal[start:end]))return filtered_signal#使用示例signal = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]window_size = 3filtered_signal = mean_filter(signal, window_size)print(filtered_signal)```2.中值滤波:将信号中每个样本点都替换为邻近样本点的中值。

这种方法适用于去除椒盐噪声等随机噪声,但不适用于平滑信号。

示例程序:```pythonimport numpy as npdef median_filter(signal, window_size):filtered_signal = []for i in range(len(signal)):start = max(0, i - window_size//2)end = min(len(signal), i + window_size//2)filtered_signal.append(np.median(signal[start:end]))return filtered_signal#使用示例signal = [1, 3, 5, 7, 9, 8, 6, 4, 2]window_size = 3filtered_signal = median_filter(signal, window_size)print(filtered_signal)```3.高斯滤波:使用一维/二维高斯函数作为滤波器,加权平均信号的邻近样本点。

10种简单的数字滤波算法

10种简单的数字滤波算法

10种简单的数字滤波算法(C语言源程序) 假定从8位AD中读取数据(如果是更高位的AD可定义数据类型为int),子程序为get_ad();1、限副滤波/* A值可根据实际情况调整value为有效值,new_value为当前采样值滤波程序返回有效的实际值*/#define A 10char value;char filter(){char new_value;new_value = get_ad();if ( ( new_value - value > A ) || ( value - new_value > A )return value;return new_value;}2、中位值滤波法/* N值可根据实际情况调整排序采用冒泡法*/#define N 11char filter(){char value_buf[N];char count,i,j,temp;for ( count=0;count<N;count++){value_buf[count] = get_ad();delay();}for (j=0;j<N-1;j++){for (i=0;i<N-j;i++){if ( value_buf[i]>value_buf[i+1] ){temp = value_buf[i];value_buf[i] = value_buf[i+1];value_buf[i+1] = temp;}}}return value_buf[(N-1)/2];}3、算术平均滤波法/**/#define N 12char filter(){int sum = 0;for ( count=0;count<N;count++){sum + = get_ad();delay();}return (char)(sum/N);}4、递推平均滤波法(又称滑动平均滤波法)/**/#define N 12char value_buf[N];char i=0;char filter(){char count;int sum=0;value_buf[i++] = get_ad();if ( i == N ) i = 0;for ( count=0;count<N,count++)sum = value_buf[count];return (char)(sum/N);}5、中位值平均滤波法(又称防脉冲干扰平均滤波法)/**/#define N 12char filter(){char count,i,j;char value_buf[N];int sum=0;for (count=0;count<N;count++){value_buf[count] = get_ad();delay();}for (j=0;j<N-1;j++){for (i=0;i<N-j;i++){if ( value_buf[i]>value_buf[i+1] ){temp = value_buf[i];value_buf[i] = value_buf[i+1];value_buf[i+1] = temp;}}}for(count=1;count<N-1;count++)sum += value[count];return (char)(sum/(N-2));}6、限幅平均滤波法/**/略参考子程序1、37、一阶滞后滤波法/* 为加快程序处理速度假定基数为100,a=0~100 */#define a 50char value;char filter(){char new_value;new_value = get_ad();return (100-a)*value + a*new_value;}8、加权递推平均滤波法/* coe数组为加权系数表,存在程序存储区。

常用滤波方法

常用滤波方法

1、限幅滤波法(又称程序判断滤波法)2、A、方法:3、根据经验判断,确定两次采样允许的最大偏差值(设为A)4、每次检测到新值时判断:5、如果本次值与上次值之差<=A,则本次值有效6、如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值7、B、优点:8、能有效克服因偶然因素引起的脉冲干扰9、C、缺点10、无法抑制那种周期性的干扰11、平滑度差12、13、2、中位值滤波法14、A、方法:15、连续采样N次(N取奇数)16、把N次采样值按大小排列17、取中间值为本次有效值18、B、优点:19、能有效克服因偶然因素引起的波动干扰20、对温度、液位的变化缓慢的被测参数有良好的滤波效果21、C、缺点:22、对流量、速度等快速变化的参数不宜23、24、25、26、3、算术平均滤波法27、A、方法:28、连续取N个采样值进行算术平均运算29、N值较大时:信号平滑度较高,但灵敏度较低30、N值较小时:信号平滑度较低,但灵敏度较高31、N值的选取:一般流量,N=12;压力:N=432、B、优点:33、适用于对一般具有随机干扰的信号进行滤波34、这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动35、C、缺点:36、对于测量速度较慢或要求数据计算速度较快的实时控制不适用37、比较浪费RAM38、39、4、递推平均滤波法(又称滑动平均滤波法)40、A、方法:41、把连续取N个采样值看成一个队列42、队列的长度固定为N43、每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进先出原则)44、把队列中的N个数据进行算术平均运算,就可获得新的滤波结果45、N值的选取:流量,N=12;压力:N=4;液面,N=4~12;温度,N=1~446、B、优点:47、对周期性干扰有良好的抑制作用,平滑度高48、适用于高频振荡的系统49、C、缺点:50、灵敏度低51、对偶然出现的脉冲性干扰的抑制作用较差52、不易消除由于脉冲干扰所引起的采样值偏差53、不适用于脉冲干扰比较严重的场合54、比较浪费RAM55、56、5、中位值平均滤波法(又称防脉冲干扰平均滤波法)57、A、方法:58、相当于“中位值滤波法”+“算术平均滤波法”59、连续采样N个数据,去掉一个最大值和一个最小值60、然后计算N-2个数据的算术平均值61、N值的选取:3~1462、B、优点:63、融合了两种滤波法的优点64、对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差65、C、缺点:66、测量速度较慢,和算术平均滤波法一样67、比较浪费RAM68、69、70、71、72、6、限幅平均滤波法73、A、方法:74、相当于“限幅滤波法”+“递推平均滤波法”75、每次采样到的新数据先进行限幅处理,76、再送入队列进行递推平均滤波处理77、B、优点:78、融合了两种滤波法的优点79、对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差80、C、缺点:81、比较浪费RAM82、83、84、85、7、一阶滞后滤波法86、A、方法:87、取a=0~188、本次滤波结果=(1-a)*本次采样值+a*上次滤波结果89、B、优点:90、对周期性干扰具有良好的抑制作用91、适用于波动频率较高的场合92、C、缺点:93、相位滞后,灵敏度低94、滞后程度取决于a值大小95、不能消除滤波频率高于采样频率的1/2的干扰信号96、97、8、加权递推平均滤波法98、A、方法:99、是对递推平均滤波法的改进,即不同时刻的数据加以不同的权100、通常是,越接近现时刻的数据,权取得越大。

几种滤波算法

几种滤波算法

一.十一种通用滤波算法(转)1、限幅滤波法(又称程序判断滤波法)A、方法:根据经验判断,确定两次采样允许的最大偏差值(设为A)每次检测到新值时判断:如果本次值与上次值之差<=A,则本次值有效如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值B、优点:能有效克服因偶然因素引起的脉冲干扰C、缺点无法抑制那种周期性的干扰平滑度差2、中位值滤波法A、方法:连续采样N次(N取奇数)把N次采样值按大小排列取中间值为本次有效值B、优点:能有效克服因偶然因素引起的波动干扰对温度、液位的变化缓慢的被测参数有良好的滤波效果C、缺点:对流量、速度等快速变化的参数不宜3、算术平均滤波法A、方法:连续取N个采样值进行算术平均运算N值较大时:信号平滑度较高,但灵敏度较低N值较小时:信号平滑度较低,但灵敏度较高N值的选取:一般流量,N=12;压力:N=4适用于对一般具有随机干扰的信号进行滤波这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动C、缺点:对于测量速度较慢或要求数据计算速度较快的实时控制不适用比较浪费RAM4、递推平均滤波法(又称滑动平均滤波法)A、方法:把连续取N个采样值看成一个队列队列的长度固定为N每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进先出原则) 把队列中的N个数据进行算术平均运算,就可获得新的滤波结果N值的选取:流量,N=12;压力:N=4;液面,N=4~12;温度,N=1~4 B、优点:对周期性干扰有良好的抑制作用,平滑度高适用于高频振荡的系统C、缺点:灵敏度低对偶然出现的脉冲性干扰的抑制作用较差不易消除由于脉冲干扰所引起的采样值偏差不适用于脉冲干扰比较严重的场合比较浪费RAM5、中位值平均滤波法(又称防脉冲干扰平均滤波法)A、方法:相当于“中位值滤波法”+“算术平均滤波法”连续采样N个数据,去掉一个最大值和一个最小值然后计算N-2个数据的算术平均值N值的选取:3~14融合了两种滤波法的优点对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差C、缺点:测量速度较慢,和算术平均滤波法一样比较浪费RAM6、限幅平均滤波法A、方法:相当于“限幅滤波法”+“递推平均滤波法”每次采样到的新数据先进行限幅处理,再送入队列进行递推平均滤波处理B、优点:融合了两种滤波法的优点对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差C、缺点:比较浪费RAM7、一阶滞后滤波法A、方法:取a=0~1本次滤波结果=(1-a)*本次采样值+a*上次滤波结果B、优点:对周期性干扰具有良好的抑制作用适用于波动频率较高的场合C、缺点:相位滞后,灵敏度低滞后程度取决于a值大小不能消除滤波频率高于采样频率的1/2的干扰信号8、加权递推平均滤波法A、方法:是对递推平均滤波法的改进,即不同时刻的数据加以不同的权通常是,越接近现时刻的数据,权取得越大。

十一种滤波方法及C语言程序

十一种滤波方法及C语言程序

一.十一种通用滤波算法(转)1、限幅滤波法(又称程序判断滤波法)A、方法:根据经验判断,确定两次采样允许的最大偏差值(设为A)每次检测到新值时判断:如果本次值与上次值之差<=A,则本次值有效如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值B、优点:能有效克服因偶然因素引起的脉冲干扰C、缺点无法抑制那种周期性的干扰平滑度差2、中位值滤波法A、方法:连续采样N次(N取奇数)把N次采样值按大小排列取中间值为本次有效值B、优点:能有效克服因偶然因素引起的波动干扰对温度、液位的变化缓慢的被测参数有良好的滤波效果C、缺点:对流量、速度等快速变化的参数不宜3、算术平均滤波法A、方法:连续取N个采样值进行算术平均运算N值较大时:信号平滑度较高,但灵敏度较低N值较小时:信号平滑度较低,但灵敏度较高N值的选取:一般流量,N=12;压力:N=4B、优点:适用于对一般具有随机干扰的信号进行滤波这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动C、缺点:对于测量速度较慢或要求数据计算速度较快的实时控制不适用比较浪费RAM4、递推平均滤波法(又称滑动平均滤波法)A、方法:把连续取N个采样值看成一个队列队列的长度固定为N每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进先出原则) 把队列中的N个数据进行算术平均运算,就可获得新的滤波结果N值的选取:流量,N=12;压力:N=4;液面,N=4~12;温度,N=1~4 B、优点:对周期性干扰有良好的抑制作用,平滑度高适用于高频振荡的系统C、缺点:灵敏度低对偶然出现的脉冲性干扰的抑制作用较差不易消除由于脉冲干扰所引起的采样值偏差不适用于脉冲干扰比较严重的场合比较浪费RAM5、中位值平均滤波法(又称防脉冲干扰平均滤波法)A、方法:相当于“中位值滤波法”+“算术平均滤波法”连续采样N个数据,去掉一个最大值和一个最小值然后计算N-2个数据的算术平均值N值的选取:3~14B、优点:融合了两种滤波法的优点对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差C、缺点:测量速度较慢,和算术平均滤波法一样比较浪费RAM6、限幅平均滤波法A、方法:相当于“限幅滤波法”+“递推平均滤波法”每次采样到的新数据先进行限幅处理,再送入队列进行递推平均滤波处理B、优点:融合了两种滤波法的优点对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差C、缺点:比较浪费RAM7、一阶滞后滤波法A、方法:取a=0~1本次滤波结果=(1-a)*本次采样值+a*上次滤波结果B、优点:对周期性干扰具有良好的抑制作用适用于波动频率较高的场合C、缺点:相位滞后,灵敏度低滞后程度取决于a值大小不能消除滤波频率高于采样频率的1/2的干扰信号8、加权递推平均滤波法A、方法:是对递推平均滤波法的改进,即不同时刻的数据加以不同的权通常是,越接近现时刻的数据,权取得越大。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件滤波算法(转载)这几天做一个流量检测的东西,其中用到了对数据的处理部分,试了很多种方法,从网上找到这些个滤波算法,贴出来记下需要注意的是如果用到求平均值的话,注意总和变量是否有溢出,程序没必要照搬,主要学习这些方法,相信做东西的时候都能用得上1、限幅滤波法(又称程序判断滤波法)A、方法:根据经验判断,确定两次采样允许的最大偏差值(设为A)每次检测到新值时判断:如果本次值与上次值之差<=A,则本次值有效如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值B、优点:能有效克服因偶然因素引起的脉冲干扰C、缺点无法抑制那种周期性的干扰平滑度差2、中位值滤波法A、方法:连续采样N次(N取奇数)把N次采样值按大小排列取中间值为本次有效值B、优点:能有效克服因偶然因素引起的波动干扰对温度、液位的变化缓慢的被测参数有良好的滤波效果C、缺点:对流量、速度等快速变化的参数不宜3、算术平均滤波法A、方法:连续取N个采样值进行算术平均运算N值较大时:信号平滑度较高,但灵敏度较低N值较小时:信号平滑度较低,但灵敏度较高N值的选取:一般流量,N=12;压力:N=4B、优点:适用于对一般具有随机干扰的信号进行滤波这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动C、缺点:对于测量速度较慢或要求数据计算速度较快的实时控制不适用比较浪费RAM4、递推平均滤波法(又称滑动平均滤波法)A、方法:把连续取N个采样值看成一个队列队列的长度固定为N每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进先出原则)把队列中的N个数据进行算术平均运算,就可获得新的滤波结果N值的选取:流量,N=12;压力:N=4;液面,N=4~12;温度,N=1~4B、优点:对周期性干扰有良好的抑制作用,平滑度高适用于高频振荡的系统C、缺点:灵敏度低对偶然出现的脉冲性干扰的抑制作用较差不易消除由于脉冲干扰所引起的采样值偏差不适用于脉冲干扰比较严重的场合比较浪费RAM5、中位值平均滤波法(又称防脉冲干扰平均滤波法)A、方法:相当于“中位值滤波法”+“算术平均滤波法”连续采样N个数据,去掉一个最大值和一个最小值然后计算N-2个数据的算术平均值N值的选取:3~14B、优点:融合了两种滤波法的优点对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差C、缺点:测量速度较慢,和算术平均滤波法一样比较浪费RAM6、限幅平均滤波法A、方法:相当于“限幅滤波法”+“递推平均滤波法”每次采样到的新数据先进行限幅处理,再送入队列进行递推平均滤波处理B、优点:融合了两种滤波法的优点对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差C、缺点:比较浪费RAM7、一阶滞后滤波法A、方法:取a=0~1本次滤波结果=(1-a)*本次采样值+a*上次滤波结果B、优点:对周期性干扰具有良好的抑制作用适用于波动频率较高的场合C、缺点:相位滞后,灵敏度低滞后程度取决于a值大小不能消除滤波频率高于采样频率的1/2的干扰信号8、加权递推平均滤波法A、方法:是对递推平均滤波法的改进,即不同时刻的数据加以不同的权通常是,越接近现时刻的数据,权取得越大。

给予新采样值的权系数越大,则灵敏度越高,但信号平滑度越低B、优点:适用于有较大纯滞后时间常数的对象和采样周期较短的系统C、缺点:对于纯滞后时间常数较小,采样周期较长,变化缓慢的信号不能迅速反应系统当前所受干扰的严重程度,滤波效果差9、消抖滤波法A、方法:设置一个滤波计数器将每次采样值与当前有效值比较:如果采样值=当前有效值,则计数器清零如果采样值<>当前有效值,则计数器+1,并判断计数器是否>=上限N(溢出)如果计数器溢出,则将本次值替换当前有效值,并清计数器B、优点:对于变化缓慢的被测参数有较好的滤波效果,可避免在临界值附近控制器的反复开/关跳动或显示器上数值抖动C、缺点:对于快速变化的参数不宜如果在计数器溢出的那一次采样到的值恰好是干扰值,则会将干扰值当作有效值导入系统10、限幅消抖滤波法A、方法:相当于“限幅滤波法”+“消抖滤波法”先限幅,后消抖B、优点:继承了“限幅”和“消抖”的优点改进了“消抖滤波法”中的某些缺陷,避免将干扰值导入系统C、缺点:对于快速变化的参数不宜第11种方法:IIR 数字滤波器A. 方法:确定信号带宽,滤之。

Y(n) = a1*Y(n-1) + a2*Y(n-2) + ... + ak*Y(n-k) + b0*X(n) + b1*X(n-1) + b2*X(n-2) + ... + bk*X(n-k)B. 优点:高通,低通,带通,带阻任意。

设计简单(用matlab)C. 缺点:运算量大。

//---------------------------------------------------------------------软件滤波的C程序样例10种软件滤波方法的示例程序假定从8位AD中读取数据(如果是更高位的AD可定义数据类型为int),子程序为get_ad();1、限副滤波1./* A值可根据实际情况调整2. value为有效值,new_value为当前采样值3.滤波程序返回有效的实际值 */4.#define A 105.6.char value;7.8.char filter()9.{10. char new_value;11. new_value = get_ad();12. if ( ( new_value - value > A ) || ( value - new_value > A )13. return value;14. return new_value;15.16.}2、中位值滤波法1./* N值可根据实际情况调整2.排序采用冒泡法*/3.#define N 114.5.char filter()6.{7. char value_buf[N];8. char count,i,j,temp;9. for ( count=0;count<N;count++)10. {11. value_buf[count] = get_ad();12. delay();13. }14. for (j=0;j<N-1;j++)15. {16. for (i=0;i<N-j;i++)17. {18. if ( value_buf>value_buf[i+1] )19. {20. temp = value_buf;21. value_buf = value_buf[i+1];22. value_buf[i+1] = temp;23. }24. }25. }26. return value_buf[(N-1)/2];27.}3、算术平均滤波法1./*2.*/3.4.#define N 125.6.char filter()7.{8. int sum = 0;9. for ( count=0;count<N;count++)10. {11. sum + = get_ad();12. delay();13. }14. return (char)(sum/N);15.}4、递推平均滤波法(又称滑动平均滤波法)1./*2.*/3.#define N 124.5.char value_buf[N];6.char i=0;7.8.char filter()9.{10. char count;11. int sum=0;12. value_buf[i++] = get_ad();13. if ( i == N ) i = 0;14. for ( count=0;count<N,count++)15. sum = value_buf[count];16. return (char)(sum/N);17.}5、中位值平均滤波法(又称防脉冲干扰平均滤波法)1./*2.*/3.#define N 124.5.char filter()6.{7. char count,i,j;8. char value_buf[N];9. int sum=0;10. for (count=0;count<N;count++)11. {12. value_buf[count] = get_ad();13. delay();14. }15. for (j=0;j<N-1;j++)16. {17. for (i=0;i<N-j;i++)18. {19. if ( value_buf>value_buf[i+1] )20. {21. temp = value_buf;22. value_buf = value_buf[i+1];23. value_buf[i+1] = temp;24. }25. }26. }27. for(count=1;count<N-1;count++)28. sum += value[count];29. return (char)(sum/(N-2));30.}6、限幅平均滤波法1./*2.*/3.略参考子程序1、37、一阶滞后滤波法1./* 为加快程序处理速度假定基数为100,a=0~100 */2.3.#define a 504.5.char value;6.7.char filter()8.{9. char new_value;10. new_value = get_ad();11. return (100-a)*value + a*new_value;12.}8、加权递推平均滤波法1./* coe数组为加权系数表,存在程序存储区。

*/2.3.#define N 124.5.char code coe[N] = {1,2,3,4,5,6,7,8,9,10,11,12};6.char code sum_coe = 1+2+3+4+5+6+7+8+9+10+11+12;7.8.char filter()9.{10. char count;11. char value_buf[N];12. int sum=0;13. for (count=0,count<N;count++)14. {15. value_buf[count] = get_ad();16. delay();17. }18. for (count=0,count<N;count++)19. sum += value_buf[count]*coe[count];20. return (char)(sum/sum_coe);21.}9、消抖滤波法1.#define N 122.3.char filter()4.{5. char count=0;6. char new_value;7. new_value = get_ad();8. while (value !=new_value);9. {10. count++;11. if (count>=N) return new_value;12. delay();13. new_value = get_ad();14. }15. return value;16.}10、限幅消抖滤波法1./*2.*/3.略参考子程序1、911、IIR滤波例子1.int BandpassFilter4(int InputAD4)2.{3. int ReturnValue;4. int ii;5. RESLO=0;6. RESHI=0;7. MACS=*PdelIn;8. OP2=1068; //FilterCoeff4[4];9. MACS=*(PdelIn+1);10. OP2=8; //FilterCoeff4[3];11. MACS=*(PdelIn+2);12. OP2=-2001;//FilterCoeff4[2];13. MACS=*(PdelIn+3);14. OP2=8; //FilterCoeff4[1];15. MACS=InputAD4;16. OP2=1068; //FilterCoeff4[0];17. MACS=*PdelOu;18. OP2=-7190;//FilterCoeff4[8];19. MACS=*(PdelOu+1);20. OP2=-1973; //FilterCoeff4[7];21. MACS=*(PdelOu+2);22. OP2=-19578;//FilterCoeff4[6];23. MACS=*(PdelOu+3);24. OP2=-3047; //FilterCoeff4[5];25. *p=RESLO;26.27. *(p+1)=RESHI;28.29. mytestmul<<=2;30. ReturnValue=*(p+1);31.32. for (ii=0;ii<3;ii++)33.34. {35. DelayInput[ii]=DelayInput[ii+1];36.37. DelayOutput[ii]=DelayOutput[ii+1];38. }39.40. DelayInput[3]=InputAD4;41.42. DelayOutput[3]=ReturnValue;43.44.45. // if (ReturnValue<0)46. // {47.48. // ReturnValue=-ReturnValue;49.50. // }51. return ReturnValue;52.}。

相关文档
最新文档