我需要检测在查看加速度计数据时发生的两种不同的手势。这是一个失败的过程(就我所能做到的简短):
可以说,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
如果您发布原始数据,则可能有人可以将其转换为绘图并使用它来编辑您的帖子。
—
杰森R
太好了。不久将上传一些。
—
rykardo
那花了比我预期更长的时间。我正在使用Unity运行项目,该项目只能以60帧/秒的速度从设备接收输入数据。这意味着我不能有很高的采样率,但是。这是您的建议的意思吗?
—
rykardo