Python FFT用于特征提取

我正在寻找一种方法,通过加速度计数据进行特征提取,用于活动识别。我的数据采样率为100Hz。

根据我查阅的各种资料,FFT是一种很好的方法。我的数据采用滑动窗口格式,每个窗口的长度为256。我使用Python和NumPy库来实现这一点。我用来应用FFT的代码如下:

输出结果如下所示:

fft_data

array([  2.92394828e+01 +0.00000000e+00j,
        -6.00104665e-01 -7.57915977e+00j,
        -1.02677676e+01 -1.55806119e+00j,
        -7.17273995e-01 -6.64043705e+00j,
         3.45758079e+01 +3.60869421e+01j,
         etc..

freq_data

array([  0.      ,   0.390625,   0.78125 ,   1.171875,   1.5625  , etc...

power_spectrum

array([  8.54947354e+02,   5.78037884e+01,   1.07854606e+02,
         4.46098863e+01,   2.49775388e+03,   etc...

我还使用以下代码绘制了结果,其中fst_ps是power_spectrum的第一个数组/窗口,fst_freq是fft_freq数据的第一个窗口/数组。

FFT

我正在寻找关于下一步如何提取特征的建议。谢谢


回答:

因此,当你将信号分解成频谱后,下一步你可以尝试理解哪些频率对你的应用是相关的。但从单一的频谱图中获取这些信息相当困难。请记住,频谱中的一个频率仓 – 它是同一个基本信号,但被限制在一个狭窄的频率范围内。某些频率可能对你的任务不重要。

更好的方法是,如果你可以尝试短时傅里叶变换(STFT)方法来理解你的信号在频率-时间域的特征。例如,你可以阅读这篇文章,了解Python中STFT的应用。通常,这种方法用于寻找某种时间-频率模式,这些模式可以被识别为特征。例如,在人类声音模式中(如文章所述),你可能会看到持续的浮动频率,这些频率具有持续时间和频率边界特征。你需要对你的信号进行STFT,以便在声谱图上找到一些模式,从而提取适合你任务的特征。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注