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


10

我需要检测在查看加速度计数据时发生的两种不同的手势。这是一个失败的过程(就我所能做到的简短):

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

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

问题是,我需要检测(在运动在屏幕上动态显示动画时实时)刚结束的振荡是奇异的,还是在相反方向上继续发生另一振荡。在此我要指出,加速度计可与压力板配合使用。当振荡停止时,输入数据将显示与执行振荡时相反的值。这使得很难看到单次向前运动和两次向前然后向后运动之间的明显区别(在每个第一次振荡的结束时)。

谁能建议我如何利用FFT来解密准确的幅度值(或其他有用的值),以便我可以用来分辨上述手势之间的差异?

我已经记录了用于文本文件的数据。它是沿加速度计输入y轴的原始数据(g力值)。

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

在此处输入图片说明

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

在此处输入图片说明


我自己没有看过数据,第一印象是这似乎不是FFT的良好应用。您是否有可以原始格式或绘图形式发布的一些捕获数据?
杰森R

您好,感谢您的反馈。只是一个按时间顺序显示每个值并带有','分隔符的文件是否可以接受?我每秒获得大约60个值。我怀疑这可能也不是一个好的应用程序。也许我们可以处理一些数据。
rykardo

2
如果您发布原始数据,则可能有人可以将其转换为绘图并使用它来编辑您的帖子。
杰森R

太好了。不久将上传一些。
rykardo

那花了比我预期更长的时间。我正在使用Unity运行项目,该项目只能以60帧/秒的速度从设备接收输入数据。这意味着我不能有很高的采样率,但是。这是您的建议的意思吗?
rykardo

Answers:


2

查看数据,我看不到为什么要为此目的使用FFT(尽管我可能是错的)。假设您要基于此数据集(已附加)检测单个或多个运动,我要查看的方法将是

  1. 绝对值变化率线上的东西。我猜一阶导数会很好。
  2. 小波变换可能吗?在不知道您是否要知道峰的位置之前,我无法详细介绍其效用。

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


感谢您的反馈!一位朋友建议使用FFT,因为在此之前我从未使用过FFT。我需要检测的是每次振荡结束时是否开始新的振荡。上面的图应该揭示出为什么很难。我以为可以使用幅度算法,但这很棘手,因为每个用户的振荡功率/速度会有所不同。
rykardo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.