Я досить новачок у DSP і провів деякі дослідження можливих фільтрів для згладжування даних акселерометра в python. Приклад типу даних, які я відчуваю, можна побачити на наступному зображенні:
По суті, я шукаю поради, як згладити ці дані, щоб з часом перетворити їх у швидкість та переміщення. Я розумію, що акселерометри з мобільних телефонів надзвичайно галасливі.
Я не думаю, що я можу використовувати фільтр Kalman на даний момент, тому що я не можу отримати пристрій для посилання на шум, що видається даними (я читав, що його важливо, щоб розмістити пристрій рівним і знайти кількість шуму від цих показань?)
FFT дав кілька цікавих результатів. Однією з моїх спроб було FFT сигнал прискорення, а потім надавати низькі частоти, щоб мати абсолютне значення FFT 0. Тоді я використав амега арифметичний і зворотний FFT, щоб отримати графік швидкості. Результати були такими:
Це хороший шлях для речей? Я намагаюся зняти загальний шумний характер сигналу, але очевидні піки, такі як приблизно за 80 секунд, потрібно визначити.
Я також втомився від використання фільтрів низьких частот за оригінальними даними акселерометра, який зробив велику роботу з його згладжуванням, але я не дуже впевнений, куди подітися. Будь-які вказівки щодо того, куди поїхати звідси, були б дуже корисними!
EDIT: Трохи коду:
for i in range(len(fz)):
testing = (abs(Sz[i]))/Nz
if fz[i] < 0.05:
Sz[i]=0
Velfreq = []
Velfreqa = array(Velfreq)
Velfreqa = Sz/(2*pi*fz*1j)
Veltimed = ifft(Velfreqa)
real = Veltimed.real
Таким чином, Ive здійснив FFT за моїми даними акселерометра, даючи Sz, відфільтровував високі частоти, використовуючи простий фільтр цегляної стіни (я знаю, що це не ідеально). Тоді я використовую арифметику омеги на FFT даних. Також дуже дякую datageist за додавання моїх зображень у мій пост :)
fz
масиву, але здається, що замість цього ви застосовуєте фільтр високої частоти.