Tôi có thể sử dụng FFT để diễn giải các cử chỉ gia tốc không?


10

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).

nhập mô tả hình ảnh ở đây

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).

nhập mô tả hình ảnh ở đây


Không tự mình nhìn thấy dữ liệu, ấn tượng đầu tiên của tôi là đây dường như không phải là một ứng dụng tốt cho FFT. Bạn có một số dữ liệu được chụp mà bạn có thể đăng, ở định dạng thô hoặc dưới dạng cốt truyện không?
Jason R

Xin chào, cảm ơn đã phản hồi. Chỉ một tệp hiển thị từng giá trị theo thời gian có thể được chấp nhận, với dấu phân cách ','? Tôi đang nhận được khoảng 60 giá trị mỗi giây. Tôi nghi ngờ rằng đây có thể không phải là một ứng dụng tốt. Có lẽ chúng ta có thể làm việc thông qua nó với một số dữ liệu mặc dù.
rykardo

2
Nếu bạn đăng dữ liệu thô, có khả năng ai đó có thể chuyển đổi nó thành cốt truyện và chỉnh sửa bài đăng của bạn với nó.
Jason R

Tuyệt. Sẽ tải lên một số trong thời gian ngắn.
rykardo

Điều đó diễn ra lâu hơn tôi mong đợi. Tôi đang chạy dự án với Unity, chỉ có thể nhận dữ liệu đầu vào từ thiết bị ở tốc độ 60 khung hình / giây. Điều này có nghĩa là tôi không thể có tỷ lệ mẫu cao, tuy nhiên. Đây có phải là những gì bạn có ý nghĩa với đề nghị của bạn?
rykardo

Câu trả lời:


2

Nhìn vào dữ liệu tôi không thể hiểu tại sao bạn muốn sử dụng FFT cho mục đích này (mặc dù tôi có thể sai). Hãy nói rằng bạn muốn phát hiện một hoặc nhiều chuyển động dựa trên tập dữ liệu này (mà bạn đã đính kèm) các phương pháp tôi đang tìm kiếm sẽ là

  1. Một cái gì đó trên dòng tốc độ thay đổi của các giá trị tuyệt đối. Đạo hàm đầu tiên sẽ làm tốt đẹp tôi đoán.
  2. Biến đổi Wavelet có thể? Tôi không thể giải thích thêm về tiện ích của nó cho đến khi tôi biết liệu bạn có muốn biết vị trí của các đỉnh hay không.

Nếu điều duy nhất bạn muốn phát hiện là đơn lẻ so với nhiều dao động thì theo tôi, FFT không phải là một lựa chọn tốt để phân tích.


Cảm ơn vì bạn đã phản hồi! Một người bạn đề xuất FFT có thể là con đường để đi, trước đó tôi chưa bao giờ sử dụng nó trước đây. Điều tôi cần phát hiện là liệu một dao động mới có bắt đầu ở cuối mỗi dao động hay không. Các lô trên nên phơi bày tại sao nó khó. Tôi nghĩ rằng tôi có thể sử dụng một thuật toán cường độ, nhưng điều này là khó khăn vì công suất / tốc độ của các dao động sẽ khác nhau cho mỗi người dùng.
rykardo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.