Мне нужно обнаружить два разных жеста, которые возникают при просмотре данных акселерометра. Вот краткий обзор (насколько я могу это сделать):
Допустим, iPhone колеблется взад-вперед, оставаясь лицом вверх. Пользователь может сделать одно колебание (один раз вперед или назад, жест один) или непрерывное колебание в течение любого периода времени (жест два).
В настоящее время мой код поддерживает список данных акселерометра устройства (ось Y) за последние 50 кадров. В каждом кадре эти данные вводятся с помощью алгоритма FFT (этот http://goo.gl/yi3mn ), а затем я пытаюсь интерпретировать данную частотную область. Я заметил сильную связь между скоростью колебаний и мощностью среднего и нижнего диапазона частотного пространства.
Проблема в том, что мне нужно определить (в режиме реального времени, когда движение оживляет что-то на экране), является ли только что законченное колебание единичным, или оно продолжается в другое колебание в противоположном направлении. Здесь я должен отметить, что акселерометры работают с нажимными пластинами. Когда колебание останавливается, входные данные будут показывать значение, противоположное тому, когда выполнялось колебание. Это затрудняет понимание какой-либо очевидной разницы между одним движением вперед и двойным движением вперед и назад (в конце каждого первого колебания).
Может кто-нибудь предложить, как я мог бы использовать FFT, чтобы расшифровать точное значение величины (или что-то еще полезное), которое я могу использовать, чтобы определить разницу между жестами, описанными выше?
Я записал данные, которые я использую для текстовых файлов. Это необработанные данные (значения g-силы) вдоль оси Y на входе акселерометра.
http://pastebin.ca/2108123 показывает данные для 2 особых колебаний (я держу устройство в начале, в конце и между двумя колебаниями).
ПРИМЕЧАНИЕ: новые необработанные данные с 20 колебаниями были загружены, но еще не нанесены на график. http://pastebin.ca/2108387 показывает данные для 20 непрерывных колебаний (я держу устройство все еще в начале и в конце).