我尝试使用filtfilt过滤时间序列数据。我的原始样本范围从80到大约130。过滤后的样本范围从-20到30。filtfilt函数似乎过滤了数据并将其归一化。我如何过滤数据但不将其归一化呢?
Orignal sampleFiltered sample
上面的图像是原始样本,下面的图像是过滤后的样本。
我试过这个代码过滤。
def butter_bandpass(lowcut, highcut, fs, order=5):
nyq = 0.5 * fs
low = lowcut / nyq
high = highcut / nyq
b, a = butter(order, [low, high], btype='band')
return b, a
def butter_bandpass_filter(data, lowcut, highcut, fs, order=5):
b, a = butter_bandpass(lowcut, highcut, fs, order=order)
y = filtfilt(b, a, data)
return y
我将带通设置为0.5到32。
trial = butter_bandpass_filter(trial, 0.5, 32, 256, 5)
我是信号处理的新手。提前感谢您的帮助!
1条答案
按热度按时间xcitsw881#
您已经设计了一个带通滤波器。结果,小于0.5的频率被滤除。这包括输入信号的直流分量。因此,去除了大部分直流分量的输出信号将以0为中心。