Tôi có nhu cầu phát hiện hai cử chỉ khác nhau xảy ra khi xem dữ liệu gia tốc. Đây là một sự cố (ngắn gọn như tôi có thể làm được):
Hãy nói rằng một chiếc iPhone đang bị dao động qua lại trong khi mặt còn lại. Người dùng có thể thực hiện một dao động (một lần tiến hoặc lùi, cử chỉ một) hoặc dao động liên tục trong bất kỳ khoảng thời gian nào (cử chỉ hai).
Hiện tại mã của tôi duy trì một danh sách dữ liệu gia tốc của thiết bị (trục y) từ 50 khung hình cuối cùng. Mỗi khung dữ liệu này được đặt thông qua thuật toán FFT (cái này http://goo.gl/yi3mn ), và sau đó tôi cố gắng diễn giải miền tần số đã cho. Tôi đã nhận thấy một mối quan hệ mạnh mẽ giữa tốc độ của các dao động và sức mạnh của dải tần từ trung bình đến thấp của không gian tần số.
Vấn đề là tôi cần phát hiện (trong thời gian thực khi chuyển động kích hoạt một cái gì đó trên màn hình) xem dao động vừa kết thúc là một số ít hay một tiếp tục chuyển động theo một hướng ngược lại. Ở đây tôi nên chỉ ra rằng gia tốc kế làm việc với các tấm áp suất. Khi một dao động dừng, dữ liệu đầu vào sẽ hiển thị giá trị ngược lại từ khi dao động được thực hiện. Điều này gây khó khăn cho việc nhìn thấy bất kỳ sự khác biệt rõ ràng nào giữa một chuyển động về phía trước và một chuyển động gấp đôi sau đó chuyển động lùi (ở cuối của mỗi dao động đầu tiên).
Bất cứ ai cũng có thể đề nghị làm thế nào tôi có thể sử dụng FFT để giải mã một giá trị cường độ chính xác (hoặc một cái gì đó hữu ích khác) mà tôi có thể sử dụng để nói sự khác biệt giữa các cử chỉ được mô tả ở trên?
Tôi đã ghi lại dữ liệu tôi đang sử dụng vào các tệp văn bản. Đó là dữ liệu thô (giá trị lực g) dọc theo trục y của đầu vào gia tốc kế.
http://pastebin.ca/2108123 hiển thị dữ liệu cho 2 dao động số ít (Tôi giữ thiết bị ở đầu, cuối và giữa hai dao động).
LƯU Ý: dữ liệu thô mới với 20 dao động đã được tải lên, nhưng chưa được vẽ. http://pastebin.ca/2108387 hiển thị dữ liệu cho 20 dao động liên tục (Tôi giữ thiết bị ở đầu và cuối).