我正在寻找一种方法,通过加速度计数据进行特征提取,用于活动识别。我的数据采样率为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数据的第一个窗口/数组。
我正在寻找关于下一步如何提取特征的建议。谢谢
回答:
因此,当你将信号分解成频谱后,下一步你可以尝试理解哪些频率对你的应用是相关的。但从单一的频谱图中获取这些信息相当困难。请记住,频谱中的一个频率仓 – 它是同一个基本信号,但被限制在一个狭窄的频率范围内。某些频率可能对你的任务不重要。
更好的方法是,如果你可以尝试短时傅里叶变换(STFT)方法来理解你的信号在频率-时间域的特征。例如,你可以阅读这篇文章,了解Python中STFT的应用。通常,这种方法用于寻找某种时间-频率模式,这些模式可以被识别为特征。例如,在人类声音模式中(如文章所述),你可能会看到持续的浮动频率,这些频率具有持续时间和频率边界特征。你需要对你的信号进行STFT,以便在声谱图上找到一些模式,从而提取适合你任务的特征。