常用数据时域降噪方法

数据降噪是最常用的数据处理方法之一。从时域和频域的角度,数据降噪方法可以分为时域降噪和频域降噪,本文主要介绍一些常用的时域降噪方法。

1 滑窗降噪

1.1 均值滑窗降噪

均值滑窗是最常用最简单的一种时域滤波方法,其基本原理是设定一个滑动窗口,该滑动窗口沿着原始数据时序方向移动,每次移动时计算当前窗口的平均值作为滤波值,最终得到滑动平均序列,其过程可表示为下图。

在这里插入图片描述

记滑动窗口长度为 L(L为奇数),则滑动平均可表示为:

y i = 1 L ( x ( i − L − 1 2 ) + ⋯ + x ( i + L − 1 2 ) ) y_i = \frac{1}{L}\left( x \left( i - \frac{L-1}{2} \right) + \cdots + x\left(i + \frac{L-1}{2} \right) \right) yi=L1(x(i2L1)++x(i+2L1))

滑动窗口为对称窗口,防止出现相位偏差,窗口长度一般为奇数。特别地,滑动平均的滤波效果取决于滑动窗的长度,一般长度越大平滑效果越好,但窗口选择过大可能出现过平滑,湮没有效信号,且滑动平均滤波对边缘数据的处理效果不佳。

另外,均值滑窗可能会出现信号峰值偏移的问题。

python 实现

def moving_average(data, window_size):
    # 均值滑窗降噪    
    smoothed_data = []    
    for i in range(len(data)):        
    start = max(0, i - window_size // 2)        
    end = min(len(data), i + window_size // 2 + 1)        
    window = data[start:end]        
    smoothed_data.append(sum(window) / len(window))    
    return smoothed_data

也可以通过卷积的方式实现滑窗滤波,此处不展开讨论。
python 实现

import numpy as np
def moving_average_conv(data, window_size):    
   # 卷积滑窗滤波    
   window = np.ones(window_size) / window_size    
   smoothed_data = np.convolve(data, window, mode='same')    
   return smoothed_data
1.2 SG 滤波

SG(Savitzky-Golay)滤波是一种广泛使用的数据滑窗滤波降噪方法,其基于曲线局部特征进行多项式拟合,应用最小二乘法确定加权系数进行移动窗口加权平均,重构的数据能够较好保留局部特征,不受时间及空间尺度的影响。

SG滤波的基本公式可表示为:
y i = ∑ i = − m i = m C i Y j + 1 L y_i = \frac{\sum _{i=-m} ^{i=m} C_i Y_{j+1}}{L} yi=Li=mi=mCiYj+1

其中 L 为滤波窗口长度(L 为奇数),测量点为 x,采用 k − 1 k-1 k1 次多项式对窗口内的数据点进行拟合,记拟合常数为 A A A,那么有滤波的结果为:
y = A [ 1 , x , x 2 , ⋯   , x k − 1 ] T y = A [1, x, x^2, \cdots, x^{k-1}]^T y=A[1,x,x2,,xk1]T

不难发现,在使用SG滤波进行降噪时,窗口长度 ,多项式拟合阶次对降噪结果起着至关重要的作用。窗口长度越长,单次参与拟合的数据量越多,多项式拟合阶次越高,单次拟合的结果越接近原始信号,保留的细节越多,但是过高的阶次可能出现过拟合,产生新的噪声。

python 实现

import numpy as np
from scipy import signal
def moving_average_sg(data, window_size, order):    
  # SG滤波
  sg_data = signal.savgol_filter(data, window_size, order)    
  return sg_data

2 分解变换降噪

2.1 奇异值分解(SVD)降噪

奇异值分解(Singular Value Decomposition, SVD)能够对矩阵进行分解,得到代表矩阵最本质变化的矩阵元素。作为信号处理的重点研究方向之一,其主要功能是去除信号中的随机噪声,降噪后的信号不存在时间延迟且相移较小。SVD 分解原理可以参考这篇博客:奇异值分解(SVD)原理

  • 滑窗
    • 均值滑窗
    • SG
  • 滤波去噪
    • SVD奇异值分解
    • 小波变换
    • 连续小波变换
    • 低通滤波
    • PCA主成分分析
  • 均值滤波
    • 线性累加平均
    • 递推式平均
    • 指数加权平均
    • 五点移动平均
  • 信号回归
    • 最小二乘回归
    • 岭回归
    • 高斯过程回归
  • 蒙特卡洛

TO BE UPDATED…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值