Jak filtrovat data z akcelerometru hlukem

hlasů
2

alt

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

Položena 26/09/2010 v 12:36
zdroj uživatelem
V jiných jazycích...                            


6 odpovědí

hlasů
2

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.

Odpovězeno 26/09/2010 v 15:42
zdroj uživatelem

hlasů
2

Zdá se, že jen chtějí low-pass filtr jako vy.

Odpovězeno 26/09/2010 v 15:29
zdroj uživatelem

Odpovězeno 02/10/2010 v 13:16
zdroj uživatelem

hlasů
1

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_arrayplovoucí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_deltazí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_deltaoblasti kolem vrcholu je nastavena na průměrnou hodnotu v tomto regionu, který vám poskytne přímku.
Odpovězeno 26/09/2010 v 12:53
zdroj uživatelem

hlasů
0

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.

Odpovězeno 26/12/2011 v 01:49
zdroj uživatelem

hlasů
0

Zkuste mediánového filtru: http://en.wikipedia.org/wiki/Median_filter , to může odstranit vrcholy, ale ne hrany

Odpovězeno 26/09/2010 v 12:56
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more