3

我正在尝试从一篇研究论文中实现一种算法,我们使用加速度计来检测活动模式。作者在论文中提到,使用截止频率为 1Hz 的高通滤波器来消除低频重力分量的影响,我在数据集上应用了这样的 x、y、z 加速度计值

sos = signal.butter(1, 1, 'highpass', output='sos', fs=12.5, analog=False)
filtered = signal.sosfilt(sos, segments)

其中段是一个 numpy 数组,具有 50 个值的切片(4 秒 x、y、z 值以 12.5Hz 采样)。然后我制作新的段,其中不同轴上的每个值都被分段在一起,例如 x 有 50 个值,y 有 50 个值等等。然后我继续对这些滤波值应用快速傅立叶变换,但无论我选择哪个段,最高幅度始终为 0 Hz,这让我相信高通滤波器没有正确实现。

这是一个示例:

freq_data = np.fft.fft(features_segments[0][0])
y = 2/N * np.abs(freq_data[0:np.int(N/2)])

features_segments[0][0]意味着第一段和 x 轴值仅给出了结果

time_signal = np.linspace(0,4,50)
plt.plot(time_signal, features_segments[0][0])

在此处输入图像描述

plt.plot(frequency, y)
plt.title('Frequency domain Signal')

在此处输入图像描述

这只是我尝试获得 0Hz 幅度的每个 fft 的一个示例,它总是比其他幅度高 50-100 倍。

4

0 回答 0