我需要检测在查看加速度计数据时出现的两种不同手势。这是一个失败(尽可能简短):
假设 iPhone 在保持正面朝上的同时来回摆动。用户可以进行一次振荡(向前或向后一次,手势一)或任意时间量的连续振荡(手势二)。
目前,我的代码维护了最近 50 帧中设备的加速度计数据(y 轴)的列表。每一帧这些数据都经过一个 FFT 算法(这个http://goo.gl/yi3mn),然后我尝试解释给定的频域。我注意到振荡速度与频率空间的中低范围的功率之间存在很强的关系。
问题是我需要检测(实时为屏幕上的运动动画)刚刚完成的振荡是单一的,还是继续向相反方向的另一振荡。在这里我应该指出加速度计与压力板一起工作。当振荡停止时,输入数据将显示与执行振荡时相反的值。这使得很难看出单次向前运动和双次向前然后向后运动(在每个第一次振荡结束时)之间的任何明显区别。
谁能建议我如何使用 FFT 来破译一个准确的幅度值(或其他有用的东西),我可以用它来区分上述手势之间的区别?
我已将我正在使用的数据记录到文本文件中。它是加速度计输入沿 y 轴的原始数据(g 力值)。
http://pastebin.ca/2108123显示了 2 个奇异振荡的数据(我将设备保持在开始、结束和两个振荡之间)。
注意:具有 20 个振荡的新原始数据已上传,但尚未绘制。 http://pastebin.ca/2108387显示了 20 次连续振荡的数据(我在开始和结束时保持设备静止)。