dsp面试试题(编辑修改稿)内容摘要:

滤波计数器将每次采样值与当前有效值比较:如果采样值=当前有效值,则计数器清零如果采样值 当前有效值,则计数器 +1,并判断计数器是否 =上限 N(溢出 ),如果计数器溢出 ,则将本次值替换当前有效值 ,并清计数器。 B、优点:对于变化缓慢的被测参数有较好的滤波效果,可避免在临界值附近控制器的反复开 /关跳动或显示器上数值抖动。 C、缺点:对于快速变化的参数不宜,如果在计数器溢出的那一次采样到的值恰好是干扰值 ,则会将干扰值当作有效值导入系统。 限幅消抖滤波法 A、方法:相当于 “ 限幅滤波法 ”+“ 消抖滤波法 ” 先限幅 ,后消抖。 B、优点: 继承了 “ 限幅 ” 和 “ 消抖 ” 的优点改进了 “ 消抖滤波法 ” 中的某些缺陷 ,避免将干扰值导入系统。 C、缺点:对于快速变化的参数不宜。 IIR 数字滤波器 A. 方法:确定信号带宽, 滤之。 Y(n) = a1*Y(n1) + a2*Y(n2) + . + ak*Y(nk) + b0*X(n) + b1*X(n1) + b2*X(n2) + . + bk*X(nk)。 B. 优点:高通,低通,带通,带阻任意。 设计简单 (用 matlab) C. 缺点:运算量大。 数字滤波常用方法(带程序) sailing 发表于 202085 15:48:20 10 种软件滤波方法的示例程序 OurWay 发表于 202092 22:24:00 10 种软件滤波方法的示例程序 (JKRL) 假定从 8 位 AD 中读取数据(如果是更高位的 AD可定义数据类型为 int),子程序为 get_ad()。 限副滤波 /* A 值可根据实际情况调整 value 为有 效值, new_value为当前采样值 滤波程序返回有效的实际值 */ define A 10 char value。 char filter() { char new_value。 new_value = get_ad()。 if ( ( new_value value A ) || ( value new_value A ) return value。 return new_value。 } 中位值滤波法 /* N 值可根据实际情况调整 排序采用冒泡法 */ define N 11 char filter() { char value_buf[N]。 char count,i,j,temp。 for ( count=0。 countN。 count++) { value_buf[count] = get_ad()。 delay()。 } for (j=0。 jN1。 j++) { for (i=0。 iNj。 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[(N1)/2]。 } 算术平均滤波法 define N 12 char filter() { int sum = 0。 for ( count=0。 countN。 count++) { sum + = get_ad()。 delay()。 } return (char)(sum/N)。 } 递推平均滤波法(又称滑动平均滤波法) 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。 countN,count++) sum = value_buf[count]。 return (char)(sum/N)。 } 中位值平均滤波法(又称防脉冲干扰平均滤波法) define N 12 char filter() { char count,i,j。 char value_buf[N]。 int sum=0。 for (count=0。 countN。 count++) { value_buf[count] = get_ad()。 delay()。 } for (j=0。 jN1。 j++) { for (i=0。 iNj。 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。 countN1。 count++) sum += value[count]。 return (char)(sum/(N2))。 } 限幅平均滤波法 /* */ 略 参考子程序 3 一阶滞后滤波法 /* 为加快程序处理速度假定基数为 100, a=0~100 */ define a 50 char value。 char filter() { char new_value。 new_value = get_ad()。 return (100a)*value + a*new_value。 } 加权递推平均滤波法 /* coe 数组为加权系数表,存在程序存储区。 */ define N 12 char 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,countN。 count++) { value_buf[count] = get_ad()。 delay()。 } for (count=0,countN。 count++) sum += value_buf[count]*coe[count]。 return (char)(sum/sum_coe)。 } 消抖滤波法 define N 12 char 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。 } 限幅消抖滤波法 /* */ 略 参考子程序 9 微机控制系统的数字滤波算法 任克强 1,刘晖 2 ( 信息工程学院江西 赣州 341000; 机电工程学院江西 赣州 341000) 摘 要 :分析了采用数字滤波消除随机干扰的优点,详细论述了微机控制系统中常用的 8 关键词 1 引言 在微机控制系统的模拟输入信号中,一般均含有各种噪声和干扰, 他们来自被测信号源本身、传感器、外界干扰等。 为了进行准确测量和控制,必须消除被测信号中的噪声和干扰。 噪声有 2大类:一类为周期性的,其典型代表为 50 Hz的工频干扰,对于这类信号,采用积分时间等于 20 ms 整倍数的双积分 A/D转换器,可有效地消除其影响;另一类为非周期的不规则随机信号,对于随机干扰,可以用数字滤波方法予以削弱或滤除。 所谓数字滤波,就是通过一定的计算或判断程序减少干扰信号在有用信号中的比重,因此他实际上是一个程序滤波。 点: (1)数字滤波器是用软件实现的,不需要增加硬设备,因而可靠性高、稳定性好,不存在阻抗匹配问题。 (2)模拟滤波器通常是各通道专用,而数字滤波器则可多通道共享,从而降低了成本。 (3)数字滤波器可以对频率很低 (如 Hz)的信号进行滤波,而模拟滤波器由于受电容容量的限制,频率不可能太低。 (4)数字滤波器可以根据信号的不同,采用不同的滤波方法或滤波参数,具有灵活、方便、功能强的特点。 2 常用数字滤波算法 数字滤波器是将一组输入数字序列进行一定的运算而转换成另一组输出数字 序列的装置。 设数字滤波器的输入为 X(n),输出为 Y(n),则输入序列和输出序列之间的关系可用差分方程式表示为: 其中:输入信号 X(n)可以是模拟信号经采样和 A/D 变换后得到的数字序列,也可以是计算机的输出信号。 具有上述关系的数字滤波器的当前输出与现在的和过去的输入、过去的输出有关。 由这样的差分方程式组成的滤波器称为递归 型数字滤波器。 如果将上述差分方程式中 bK取 0,则可得: 说明输出只和现在的输入和过去的输入有关。 这种类型的滤波器称为非递归型数字滤波器。 参数 aK、 bK的选择不同,可以实现低通、高通、带通、带阻等不同的数字滤波器。 算术平均值滤波 算术平均值滤波是要寻找一个 Y,使该值与各采样值 X(K)(K=1~ N)之间误差的平方和为最小,即: 这时,可满足式 (3)。 式 (4)便是算术平均值滤波的算法。 设第二次测量的测量值包含信号成分 Si和噪声成分 Ci,则进行 N次测量的信号成分之和为: 噪声的强度是用均方根来衡量的,当噪声为随机信号时,进行 N 次测量的噪声强度之和为: 式 (5)和式 (6)中, S、 C分别表示进行 N 次测量后信号和噪声的平均幅度。 这样对 N 次测量进行算术平均后的信噪比为: 其中, S/ C是求算术平均值前的信噪比。 因此采用算术平均值后,使信噪比提高了 倍。 算术平均值法适用于对一般具有随机干扰的信号进行滤波,这种信号的特点是有一个平均值,信号在某一数 值范围附近作上下波动,此时仅取一个采样值作依据显然是不准确的,如压力、流量、液平面等信号的测量。 但对脉冲性干扰的平滑作用尚不理想,因此他不适用于脉冲性干扰比较严重的场合。 由式 (7)可知,算术平均值法对信号的平滑滤波程度完全取决于 N。 当 N较大时,平滑度高,但灵敏度低,即外界信号的变化对测量计算结果 Y的影响小;当 N较小时,平滑度低,但灵敏度高。 应视具体情况选取 N,以便既少占用计算时间,又达到最好的效果,如对一般流量测量,可取 N=8~ 16,对压力等测量,可取 N=4。 加权平均值滤波 算术平均值法对每 次采样值给出相同的加权系数,即 1/ N。 但有些场合为了改进滤波效果,提高系统对当前所受干扰的灵敏度,需要增加新采样值在平均值中的比重,即将各采样值取不同的比例,然后再相加,此方法称为加权平均值法。 一个 N项加权平均式为: 常数 C1, C2,„, CN的选取是多种多样的,其中常用的是加权系数法,即: 他给不同的相对采样时间得到的采样值以不同的权系数,以便能迅速反应系统当前所受干扰的严重程度。 但采用加权平均值法需要测试不同过程的纯滞后时间τ,同时要不断计算各权系数,增加了计算量,降低了控制速度,因而他的实际应用不如算术平均值法广泛。 滑动平均值滤波 以上 平均滤波算法有一个共同点,即每计算 1次有效采样值必须连续采样N次。 对于采样速度较慢或要求数据计算速率较高的实时系统,这些方法是无法使用的。 例如 A/ D 数据,数据采样速率为每秒 10 次,而要求每秒输入 4 次数据时,则 N不能大于 2。 滑动平均值法只采样 1次,将本次采样值和以前的 N- 1次采样值一起求平均,得到当前的有效。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。