滤波
滤波主要分为两种,时域和频域滤波。时域滤波又可分为平均值、中值滤波、卡尔曼滤波。频域滤波又可分为低通、高通、带通、带阻滤波。本文介绍使用python实现一维数据低通滤波:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0,10*np.pi,0.01)
y = np.sin(x)
plt.plot(x,y)
plt.show()
原始数据如上。
加入噪声。
s = np.random.random(3142)*0.2
yy = s+y
plt.plot(x[0:628],yy[0:628])
plt.show()
加入噪声的数据如上。
使用scipy库中的signal函数进行滤波。
from scipy import signal
b,a = signal.butter(8,0.01,'lowpass') 8为滤波器阶数,0.01为滤波器截止频率,lowpass为低通
filldata = signal.filtfilt(b,a,yy)
plt.plot(x[0:628],filldata[0:628])
plt.show()