首页 > 编程知识 正文

无源滤波的种类(常用的滤波匹配网络有哪些)

时间:2023-05-05 21:36:58 阅读:75280 作者:2081

1、滑动滤波法(也称为程序判断滤波法) a、方法)根据经验判断,决定2次采样允许的最大偏差值(设为a )在每次检测到新值时进行判断),如果本次值与上次值之差=A 舍弃本次值,使用上次值代替本次值b,优点:能够有效克服偶然引起脉冲噪声c,缺点是无法抑制其周期性的噪声平滑度差2、中值滤波法a, 方法:将n次连续采样(n为奇数) n次采样值按从大到小顺序排列,取中值为本次有效值b,优点:可以有效克服偶然波动噪声对温度,液位变化缓慢的被测参数具有良好的滤波效果(c、缺点) 不适用于速度等急速变化的参数) 3、算术平均滤波法a、方法)连续取n个采样值进行算术平均运算的n值大的情况)信号平滑度高,但灵敏度低且n值小的情况)信号平滑度低但灵敏度高的n值的选择) 压力(N=4B,优点)适于过滤常见随机噪声信号的特征是具有平均值且要求信号在给定数值范围附近上下波动的c、缺点:测量速度慢或数据计算速度快渐进平均滤波法(也称为滑动平均滤波法) a,方法不适用)将连续取n个样本值固定为一个队列长度,每n个新数据放入队列末尾,舍弃原团队的第一个原始数据) ) 液面,N=4~12; 温度,N=1~4B,优点:对周期性干扰有良好的抑制作用,平滑度高适合高频振荡的系统c,缺点:灵敏度低,对偶发性出现的脉冲噪声的抑制作用差, 难以除去脉冲噪声引起的采样值的偏差,不适合于脉冲噪声严重的情况的比较浪费的RAM 5、中值平均滤波法(也称为脉冲噪声防止平均滤波法) a、方法:“中值滤波法”“算术平均滤波法” 3~14B,优点:融合两种滤波方法的优点是,相对于偶然出现的脉冲噪声,脉冲噪声引起的采样值的偏差c,缺点:测量速度慢,算术平均滤波法

6、限幅平均滤波法a、方法:相当于对每次“限幅滤波法”、“递归平均滤波法”采样的新数据进行限幅处理,排队进行递归平均滤波处理的b。 优点:对于融合了两种滤波方法优点的脉冲性噪声,可以消除脉冲噪声引起的采样值偏差c、缺点:无用的RAM 7、一阶延迟滤波法a、方法: a=0~1本次滤波结果=(1-a ) 优点:在对周期性噪声具有良好抑制作用波动频率高的情况下适用的c、缺点:相位延迟、灵敏度低的滞后程度依赖于a值的大小,无法去除采样频率的1/2以上的干扰信号8、加权递归平均滤波法a、方法: 赋予新采样值的权重系数越大灵敏度越高,但信号平滑度低的b、优点:适用于具有大的纯延迟时常数的对象和采样周期短的系统c,缺点:纯延迟时常数小、采样周期长、变化慢的信号是系统当前受到的干扰的严重度滤波效果差9、抖动法a、方法:设置将每次采样值与当前有效值进行比较的滤波计数器,如果采样值=当前有效值,则将计数器清零,如果采样值是当前有效值,则判断为计数器1, 如果计数器=上限n (溢出),则判断是否将本次的值置换为当前的有效值,并清除计数器b,其优点:对变化缓慢的被测量参数有良好的滤波效果,控制器在阈值附近导通可以避免关闭重复抖动和显示器中的数值抖动c,缺点:如果计数器相对于急速变化的参数溢出时采样值正好是噪声值,则将噪声值作为有效值,在系统10、限幅剪裁法a、方法:“剪裁&; 剪裁法”“剪裁&; 剪裁法”先剪裁,后剪裁&; 剪辑b,优点:“剪辑&; 继承“剪辑”的优点为“剪辑&; 改进“限幅法”的缺点,避免将噪声值引入系统c中,缺点:快速变化的参数11、缺点y(n )=a1*y ) n-1、a2*y ) n-2…AK * y (n-k ) bb

软件过滤器的c程序示例

显示10种软件过滤方法

例程序

假定从 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>value_buf[i+1] ) { temp = value_buf; value_buf = 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 12 char 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>value_buf[i+1] ) { temp = value_buf; value_buf = 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、3

7、一阶滞后滤波法

/* 为加快程序处理速度假定基数为 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 数组为加权系数表,存在程序存储区。*/#define N 12char code coe[N] = {1,2,3,4,5,6,7,8,9,10,11,12};char code sum_coe = 1+2+3+4+5+6+7+8+9+10+11+12;char filter(){ char count; char value_buf[N]; int sum=0; for (count=0,count<N;COUNT++) { value_buf[count] = get_ad(); delay(); } for (count=0,count<N;COUNT++) sum += value_buf[count]*coe[count]; return (char)(sum/sum_coe);}

9、消抖滤波法

#define N 12char filter(){ char count=0; char new_value; new_value = get_ad(); while (value !=new_value); { count++; if (count>=N) return new_value; delay(); new_value = get_ad(); } return value; }

10、限幅消抖滤波法

/**/略 参考子程序 1、9

11、IIR 滤波例子

int BandpassFilter4(int InputAD4){ int ReturnValue; int ii; RESLO=0; RESHI=0; MACS=*PdelIn; OP2=1068; //FilterCoeff4[4]; MACS=*(PdelIn+1); OP2=8; //FilterCoeff4[3]; MACS=*(PdelIn+2); OP2=-2001;//FilterCoeff4[2]; MACS=*(PdelIn+3); OP2=8; //FilterCoeff4[1]; MACS=InputAD4; OP2=1068; //FilterCoeff4[0]; MACS=*PdelOu; OP2=-7190;//FilterCoeff4[8]; MACS=*(PdelOu+1); OP2=-1973; //FilterCoeff4[7]; MACS=*(PdelOu+2); OP2=-19578;//FilterCoeff4[6]; MACS=*(PdelOu+3); OP2=-3047; //FilterCoeff4[5]; *p=RESLO; *(p+1)=RESHI; mytestmul<<=2; ReturnValue=*(p+1); for (ii=0;ii<3;ii++) { DelayInput[ii]=DelayInput[ii+1]; DelayOutput[ii]=DelayOutput[ii+1]; } DelayInput[3]=InputAD4; DelayOutput[3]=ReturnValue; // if (ReturnValue<0) // { // ReturnValue=-ReturnValue; // } return ReturnValue;

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。