У мене є необхідність виявити два різні жести, які виникають під час перегляду даних акселерометра. Ось пробіг вниз (такий короткий, як я можу зробити це):
Скажімо, iPhone коливається вперед і назад, залишаючись обличчям вгору. Користувач може виконати одне коливання (один раз вперед або назад, жест один) або безперервне коливання протягом будь-якого часу (жест два).
Наразі мій код підтримує список даних акселерометра пристрою (вісь y) з останніх 50 кадрів. Кожен кадр цих даних розміщується через алгоритм FFT (цей http://goo.gl/yi3mn ), а потім я намагаюся інтерпретувати задану частотну область. Я помітив сильну залежність між швидкістю коливань та потужністю середнього та низького діапазону частотного простору.
Проблема полягає в тому, що мені потрібно виявити (в режимі реального часу, коли рух щось оживляє на екрані), щойно закінчене коливання є сингулярним чи тим, яке продовжується в інше коливання у зворотному напрямку. Тут я повинен зазначити, що акселерометри працюють з напірними пластинами. Коли коливання припиняється, вхідні дані показуватимуть протилежне значення від коливання. Це ускладнює бачення явної різниці між одинарним рухом вперед і подвійним вперед, а потім назад (в кінці кожного першого коливання).
Чи може хто-небудь підказати, як я можу використовувати FFT для розшифровки точного значення величини (або чогось іншого корисного), яке я можу використовувати, щоб визначити різницю між описаними вище жестами?
Я записав дані, які використовую, до текстових файлів. Це необроблені дані (значення g-сили) вздовж осі y входу акселерометра.
http://pastebin.ca/2108123 показує дані для двох сингулярних коливань (я тримаю пристрій ще на початку, в кінці та між двома коливаннями).
ПРИМІТКА: нові необроблені дані з 20 коливаннями завантажені, але ще не нанесені. http://pastebin.ca/2108387 показує дані для 20 безперервних коливань (я тримаю пристрій ще на початку та в кінці).