如何从FFT提取特征?

问题描述 投票:4回答:1

我正在从以200 Hz采样的X,Y和Z加速度传感器收集数据。 3轴组合成一个称为“ XYZ_Acc”的信号。我遵循了有关如何使用scipy fftpack库将时域信号转换为频域的教程。

我正在使用的代码如下:

from scipy.fftpack import fft

# get a 500ms slice from dataframe
sample500ms = df.loc[pd.to_datetime('2019-12-15 11:01:31.000'):pd.to_datetime('2019-12-15 11:01:31.495')]['XYZ_Acc']

f_s = 200              # sensor sampling frequency 200 Hz
T   = 0.005            # 5 milliseconds between successive observation T =1/f_s
N   = 100              # 100 samples in 0.5 seconds

f_values = np.linspace(0.0, f_s/2, N//2)
fft_values = fft(sample500ms)
fft_mag_values = 2.0/N * np.abs(fft_values[0:N//2])

然后我绘制频率与幅度的关系图>

fig_fft = plt.figure(figsize=(5,5))
ax = fig_fft.add_axes([0,0,1,1])
ax.plot(f_values,fft_mag_values)

截屏:

“截图”

我现在的困难是如何从这些数据中提取特征,例如不规则性,基本频率,通量...

有人可以引导我朝正确的方向吗?

更新06/01/2019-向我的问题添加更多上下文。

我在机器学习方面相对较新,因此希望得到任何反馈。 X,Y,Z是线性加速度信号,从智能手机以200 Hz采样。我正在尝试通过分析频谱和时间统计信息来检测道路异常。

这里是csv文件的示例,该文件被解析为以时间戳为索引的熊猫数据帧。

X,Y,Z,Latitude,Longitude,Speed,timestamp
0.8756,-1.3741,3.4166,35.894833,14.354166,11.38,2019-12-15 11:01:30:750
1.0317,-0.2728,1.5602,35.894833,14.354166,11.38,2019-12-15 11:01:30:755
1.0317,-0.2728,1.5602,35.894833,14.354166,11.38,2019-12-15 11:01:30:760
1.0317,-0.2728,1.5602,35.894833,14.354166,11.38,2019-12-15 11:01:30:765
-0.1669,-1.9912,-4.2043,35.894833,14.354166,11.38,2019-12-15 11:01:30:770
-0.1669,-1.9912,-4.2043,35.894833,14.354166,11.38,2019-12-15 11:01:30:775
-0.1669,-1.9912,-4.2043,35.894833,14.354166,11.38,2019-12-15 11:01:30:780

为回答“弗朗西斯”,然后通过此代码添加两列:

df['XYZ_Acc_Mag'] = (abs(df['X']) + abs(df['Y']) + abs(df['Z']))
df['XYZ_Acc'] = (df['X'] + df['Y'] + df['Z'])

'XYZ_Acc_Mag'将用于提取时间统计信息。

'XYZ_Acc'将用于提取光谱统计信息。

lineplot

Data'XYZ_Acc_Mag'然后以0.5秒的频率重新采样,并且在新的数据帧中提取了时间统计信息,例如均值,标准差等。配对图显示了上面线条图中在11:01:35时显示的异常。

pairplot

现在回到我原来的问题。我也在0.5秒处对数据'XYZ_Acc'进行采样,并获得了幅度数组'fft_mag_values'。问题是如何从中提取时间特性,例如不规则性,基本频率,通量?

我正在从以200 Hz采样的X,Y和Z加速度传感器收集数据。 3轴组合成一个称为“ XYZ_Acc”的信号。我遵循了有关如何转换时域的教程...

python scipy fft feature-extraction
1个回答
1
投票

由于'XYZ_Acc'被定义为信号成分的线性组合,因此采用DFT是有意义的。等效于在(1,1,1)方向上使用一维加速度计。但是可以采用更多与物理能量有关的观点。计算DFT类似于将信号写入正弦之和。如果加速度矢量写为:

© www.soinside.com 2019 - 2024. All rights reserved.