几种时域滤波的比较

2024-04-07 07:08
文章标签 比较 几种 滤波 时域

本文主要是介绍几种时域滤波的比较,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 平均值滤波

  1)算术平均滤波
    方法:连续取N个采样值进行算术平均运算。N值较大时,信号平滑度较高,但灵敏度较低;N值较小时,信号平滑度较低,但灵敏度较高。N值的选取一般规则为:流量N取12;压力N取4;温度、成分等缓变信号N可取2甚至不平均。
    优点:适用于对一般具有随机干扰的信号进行滤波,这种信号的特点是有一个平均值,信号在某一数值范围附近上下波动。
    缺点:对于测量速度较慢或要求数据计算速度较快的实时控制不适用,并且比较浪费RAM。
  2)中位值平均滤波法(又称防脉冲干扰平均滤波法)
     方法:相当于“中位值滤波法”+“算术平均滤波法”,连续采样N个数据,去掉一个最大值和一个最小值,然后计算N-2个数据的算术平均值,N值的选取:3~14。
    优点:融合了两种滤波法的优点,对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差。
    缺点:测量速度较慢,和算术平均滤波法一样,比较浪费RAM。
  3)滑动平均滤波
    上述各种平均滤波算法有一个共同点,即每取得一个有效采样值,必须连续进行若干次采样,当系统的采样速度较慢(如双积分型A/D转换)或采样信号变化较快时,系统的实时性就无法得到保证。而滑动平均滤波算法能较好地解决这一问题。它在每个采样周期只采样一次,将这一次采样值和过去的若干采样值一起求平均,所得结果即为有效采样值。
    方法:把连续取N个采样值看成一个队列,队列的长度固定为N,每次采样到一个新数据就放入队尾,并扔掉原来队首的第一个数据(先进先出原则)。把队列中的N个数据进行算术平均运算,就可获得新的滤波结果。N值的一般选取方法为:流量,N=12;压力:N=4;液位,N=4~12;温度,N=1~4。
    优点:对周期性干扰有良好的抑制作用,平滑度高,适用于高频振荡的系统。
    缺点:灵敏度低,对偶然出现的脉冲性干扰的抑制作用较差,不易消除由于脉冲干扰所引起的采样值偏差,不适用于脉冲干扰比较严重的场合,比较浪费RAM。
2 中值滤波
    方法:连续采样N次(N取奇数),把N次采样值按大小排列,取中间值为本次有效值。本算法为取中值,故采样次数应为奇数,一般3~5次即可。对于变化很慢的采样信号也可增加次数。其程序编制可采用几种常规的排序算法,如冒泡算法。
    优点:能有效克服因偶然因素引起的波动干扰,对温度、液位等变化较缓慢的被测参数有良好的滤波效果。
    缺点:对流量、速度等快速变化过程的参数处理效果不好。
3 限幅滤波
    方法:根据经验判断,确定两次采样允许的最大偏差值(设为A) 每次检测到新值时进行判断,如果本次值与上次值之差<=A,则本次值有效;如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值。
    优点:能有效克服因偶然因素引起的脉冲干扰,对随机干扰或采样器不稳定引起的失真有良好的滤波效果。
    缺点:无法抑制那种周期性的干扰,平滑度差。
 一阶滞后滤波法
方法:取a=0~1,本次滤波结果=(1-a)*本次采样值+a*上次滤波结果。
优点:对周期性干扰具有良好的抑制作用 适用于波动频率较高的场合。
缺点:相位滞后,灵敏度低,滞后程度取决于a值大小,不能消除滤波频率高于采样频率的1/2的干扰信号。
http://blog.sina.com.cn/s/blog_0522d5260100mm6p.html

这篇关于几种时域滤波的比较的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/881945

相关文章

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

java中判断json key是否存在的几种方法

《java中判断jsonkey是否存在的几种方法》在使用Java处理JSON数据时,如何判断某一个key是否存在?本文就来介绍三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目http://www.chinasem.cn录第一种方法是使用 jsONObject 的 has 方法

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

Python如何实现高效的文件/目录比较

《Python如何实现高效的文件/目录比较》在系统维护、数据同步或版本控制场景中,我们经常需要比较两个目录的差异,本文将分享一下如何用Python实现高效的文件/目录比较,并灵活处理排除规则,希望对大... 目录案例一:基础目录比较与排除实现案例二:高性能大文件比较案例三:跨平台路径处理案例四:可视化差异报

Java中InputStream重复使用问题的几种解决方案

《Java中InputStream重复使用问题的几种解决方案》在Java开发中,InputStream是用于读取字节流的类,在许多场景下,我们可能需要重复读取InputStream中的数据,这篇文章主... 目录前言1. 使用mark()和reset()方法(适用于支持标记的流)2. 将流内容缓存到字节数组

在Java中实现线程之间的数据共享的几种方式总结

《在Java中实现线程之间的数据共享的几种方式总结》在Java中实现线程间数据共享是并发编程的核心需求,但需要谨慎处理同步问题以避免竞态条件,本文通过代码示例给大家介绍了几种主要实现方式及其最佳实践,... 目录1. 共享变量与同步机制2. 轻量级通信机制3. 线程安全容器4. 线程局部变量(ThreadL

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

Python实现终端清屏的几种方式详解

《Python实现终端清屏的几种方式详解》在使用Python进行终端交互式编程时,我们经常需要清空当前终端屏幕的内容,本文为大家整理了几种常见的实现方法,有需要的小伙伴可以参考下... 目录方法一:使用 `os` 模块调用系统命令方法二:使用 `subprocess` 模块执行命令方法三:打印多个换行符模拟

MySQL中比较运算符的具体使用

《MySQL中比较运算符的具体使用》本文介绍了SQL中常用的符号类型和非符号类型运算符,符号类型运算符包括等于(=)、安全等于(=)、不等于(/!=)、大小比较(,=,,=)等,感兴趣的可以了解一下... 目录符号类型运算符1. 等于运算符=2. 安全等于运算符<=>3. 不等于运算符<>或!=4. 小于运

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法