python信号滤波scipy.signal.filtfilt() (即对数组的滤波)

项目中,需要处理途中信号,首先做的工作时对其过滤掉一些噪声,保留大于阈值的部分,这时候需要用到了高通滤波。下面详细介绍:
python信号滤波scipy.signal.filtfilt() (即对数组的滤波)_第1张图片
python信号滤波scipy.signal.filtfilt() (即对数组的滤波)_第2张图片

滤波器构造函数(仅介绍Butterworth滤波器)

scipy.signal.butter(N, Wn, btype=‘low’, analog=False, output=‘ba’)
输入参数
…N:滤波器的阶数
…Wn: 归一化截止频率。
…公式:Wn=2*截止频率/采样频率。
…btype : 滤波器类型{‘lowpass’, ‘highpass’, ‘bandpass’, ‘bandstop’},
…output : 输出类型{‘ba’, ‘zpk’, ‘sos’},
输出参数
…b,a : 滤波器的分子(b)和分母(a)多项式系数向量。 即:output=‘ba’
…z,p,k : 滤波器传递函数的零点、极点和系统增益. 即:output= ‘zpk’
…sos : 滤波器的二阶截面表示。 即:output= ‘sos’

1高通滤波

我这里假设采样频率为数组的长度,信号本身最大的频率为3.5,要滤除-0.005以下部分,即截至频率为0.005,则归一化截止频率为wn=2*0.005/len(data)

from scipy import signal
b, a = signal.butter(6, 0.02, 'highpass')
filtedData = signal.filtfilt(b, a, data)  #data为要过滤的信号

你可能感兴趣的:(信号处理)