我可以使用 FFT 来解释加速度计手势吗?

信息处理 fft
2022-01-10 13:47:19

我需要检测在查看加速度计数据时出现的两种不同手势。这是一个失败(尽可能简短):

假设 iPhone 在保持正面朝上的同时来回摆动。用户可以进行一次振荡(向前或向后一次,手势一)或任意时间量的连续振荡(手势二)。

目前,我的代码维护了最近 50 帧中设备的加速度计数据(y 轴)的列表。每一帧这些数据都经过一个 FFT 算法(这个http://goo.gl/yi3mn),然后我尝试解释给定的频域。我注意到振荡速度与频率空间的中低范围的功率之间存在很强的关系。

问题是我需要检测(实时为屏幕上的运动动画)刚刚完成的振荡是单一的,还是继续向相反方向的另一振荡。在这里我应该指出加速度计与压力板一起工作。当振荡停止时,输入数据将显示与执行振荡时相反的值。这使得很难看出单次向前运动和双次向前然后向后运动(在每个第一次振荡结束时)之间的任何明显区别。

谁能建议我如何使用 FFT 来破译一个准确的幅度值(或其他有用的东西),我可以用它来区分上述手势之间的区别?

我已将我正在使用的数据记录到文本文件中。它是加速度计输入沿 y 轴的原始数据(g 力值)。

http://pastebin.ca/2108123显示了 2 个奇异振荡的数据(我将设备保持在开始、结束和两个振荡之间)。

在此处输入图像描述

注意:具有 20 个振荡的新原始数据已上传,但尚未绘制。 http://pastebin.ca/2108387显示了 20 次连续振荡的数据(我在开始和结束时保持设备静止)。

在此处输入图像描述

1个回答

查看数据,我不明白您为什么要为此目的使用 FFT(不过我可能错了)。假设您想根据此数据集(您已附加)检测单个或多个运动,我正在研究的方法是

  1. 关于绝对值变化率的东西。我猜一阶导数会做得很好。
  2. 小波变换可能吗?在我知道您是否想知道峰的位置之前,我无法详细说明它的实用性。

如果您只想检测单振荡与多振荡,那么在我看来,FFT 不是一个很好的分析选择。