Přiložené je graf akcelerometru dat s 3 osou. Náhlé hrboly pozemku jsou hluk. Rád bych se jich zbavit. Takže to, co filtr by měl být použit v tomto případě? Je-li možné zajistit určitou pseudo kód pro něj a vysvětlení.
Jak filtrovat data z akcelerometru hlukem
Při pohledu na data, nechcete žádné pokukuje, které mění hodnotu o určitou částku (cca 200, nazvěme to max_y_delta
) v určitém čase (5-15 snad max_x_delta
).
Tak si nejsem jistý, jejichž struktura vaše data má, budu jen předpokládat, že je to 3 pole data_array
plovoucích bodové hodnoty, které mají datový bod v každé poloze celočíselné. Řešení I představit mělo být tak jednoduché, jak je to možné a je třeba vyzkoušet různé hodnoty max_x/y_delta
získat dobré výsledky. I s těmi správnými hodnotami Jsem si jistý, že jsou mnohem lepší řešení, ale možná tohle je dost dobré pro vás jako start.
max_x_delta = 10
max_y_delta = 200
for each of the 3 arrays
for x = -1000...1000
points_above_delta = 0
average_value = 0
for deltax = -max_x_delta/2...max_x_delta/2
average_value += data_array[deltax]
if abs(data_array[deltax] - data_array[x]) > max_y_delta
points_above_delta++
endif
end for deltax
average_value = average_value / max_x_delta
if points_above_delta > max_x_delta/4
for deltax = -max_x_delta/2...max_x_delta/2
data_array[deltax] = average_value
end for deltax
end if
end for x
Všimněte si, že tento kód má dvě nevýhody možná nebudete chtít:
- Detekce je velmi jednoduché, tam jsou také některé pokukuje v datech, které jsou určeny, aby se tam, takže může dojít ke ztrátě některé z nich.
- Po detekci maxima, všechny hodnoty v
max_x_delta
oblasti kolem vrcholu je nastavena na průměrnou hodnotu v tomto regionu, který vám poskytne přímku.
Zkuste mediánového filtru: http://en.wikipedia.org/wiki/Median_filter , to může odstranit vrcholy, ale ne hrany
Zdá se, že jen chtějí low-pass filtr jako vy.
U naměřených dat, kde si můžete udělat přibližnou model, co se fyzicky děje, nebo to, co je fyzicky pravděpodobné, tak bych navrhnout Kalmanova filtru . To je o něco složitější než jiné metody, ale potenciálně dává čistější výstup a / nebo lepší odezvu.

Zde je, jak jsem to udělal http://levonp.blogspot.com/2010/10/how-to-filter-accelerometer-data-from.html
Medián filtry se používají k odstranění sůl a pepř hluku ve dvou rozměrových dat. V tomto jednorozměrných dat, které mají vrcholy, které chcete odstranit, jsou vrcholy intenzity analogické sůl a pepř ve 2D. Doporučil bych mediánového filtru, stejně, to pomůže zbavit těchto bodců a změnit jen velmi málo jiného. Jediná nevýhoda je, že se jedná o nelineární filtr. Mělo by být efektivní realizovat tak dlouho, dokud si pečlivě aktualizovat své čtvrti.