我是python和scipy的新手,我正在尝试过滤在25Hz下以3维度拍摄的加速度数据。我有一个奇怪的问题,在应用滤波器后,我的数据图表被平滑,但是值似乎被放大了很多,具体取决于滤波器的阶数和截止频率。这是我的代码:
from scipy import loadtxt
from scipy import signal
import numpy as np
import matplotlib.pyplot as plt
my_data = loadtxt("DATA-001.CSV",delimiter=",",skiprows=8)
N, Wn = signal.buttord( [3,11], [.3,18], .1, 10, True)
print N
print Wn
b,a = signal.butter(N, Wn, 'bandpass', analog=True)
filtered_z = signal.filtfilt(a,b,[my_data[1:500,3]],)
filtered_z = np.reshape(filtered_z, (499,))
plt.figure(1)
plt.subplot(411)
plt.plot(my_data[1:500,0],my_data[1:500,3])
plt.subplot(412)
plt.plot(my_data[1:500,0], filtered_z, 'k')
plt.show()
如果有人有任何建议,我不确定如何摆脱这种奇怪的收益问题? 谢谢!
答案 0 :(得分:1)
你在signal.filtfilt中的系数错误。应该是:
filtered_z = signal.filtfilt(b,a,[my_data[1:500,3]],)
系数的大小和比率可导致信号的放大。