好久不写笔记了,平时经常要做滤波,今天把滤波方法总结一下,方便以后使用
首先滤波器基本都封装好了,没必要自己写,直接拿来用就行,但是不同场景下有不同的需要,我主要对一维时间序列做处理,今天先对一维时间序列常用的做一下分析,首先我们要分析清楚我们要处理的噪音是什么,它和我们想要的信号有什么区别
1、基于频率的差异做滤波
如果噪音的频率和我们想要的信号频率是可区分的,那么直接从频率上做滤波就行了。
1.1 比如明确知道噪音是50hz,那么-【fft】,然后去掉50hz对应的分量,反回去重构原来的信号就行
1.2 或者用【离散小波分解】,把信号分解成不同频段的分量,然后丢弃不想要的频段分量,重构原来的信号就行
1.3 再简单一些就是用【高通滤波,低通滤波,带通滤波】,我最常用的就是butterworth,不同情况用不同的滤波器,效果也略不同。
但是很多时候噪音和我们想要的信号之间,频率往往是overlap的,我们就要进一步做分析了。
2、对于一些有小毛刺的信号,希望变信号变平滑
2.1 在信号质量比较差的时候,我们往往采集的数据中有很多小毛刺,为了消除这种随机的误差,可以用【均值滤波】!用窗口内的均值来代替原始数据。具体均值公式又会影响处理效果,比如均值从多大窗口中取。需要根据实际情况进行实验才行哦。除了在窗口中计算普通的均值以外,还可以用去极值的均值,加权的均值等等。均值滤波一般窗口长度是偶数
2.2 除了用均值以外,当然还可以用中值啦!【中值滤波】中值滤波一般窗口长度是奇数。中值滤波处理小毛刺(传感器不稳定)效