过滤scipy中的加速度计数据

时间:2016-05-12 00:19:47

标签: python filter scipy

我是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()

现在,此代码返回此图:

如果有人有任何建议,我不确定如何摆脱这种奇怪的收益问题? 谢谢!

1 个答案:

答案 0 :(得分:1)

你在signal.filtfilt中的系数错误。应该是:

filtered_z = signal.filtfilt(b,a,[my_data[1:500,3]],)

系数的大小和比率可导致信号的放大。