Mam sygnał mierzony przy 100 Hz i muszę zastosować filtr wygładzający Savitzky'ego-Golaya na tym sygnale. Jednak przy bliższej inspekcji mój sygnał nie jest mierzony z idealnie stałą szybkością, różnica między pomiarami wynosi od 9,7 do 10,3 ms.
Czy istnieje sposób na użycie filtra Savitzky-Golay w przypadku danych o nierównomiernym rozmieszczeniu? Czy są inne metody, które mógłbym zastosować?
Odpowiedzi:
Jedną z metod byłoby ponowne próbkowanie danych w taki sposób, aby były równomiernie rozmieszczone, a następnie można wykonać dowolne przetwarzanie. Ponowne próbkowanie pasma z wykorzystaniem filtrowania liniowego nie będzie dobrą opcją, ponieważ dane nie są równomiernie rozmieszczone, więc można użyć pewnego rodzaju lokalnej interpolacji wielomianowej (np. Splajny sześcienne), aby oszacować, jakie wartości leżącego u podstaw sygnału są „dokładne” Interwały 10 milisekund.
źródło
Ze względu na sposób, w jaki uzyskiwany jest filtr Savitzky'ego-Golay'a (tj. Gdy lokalne wielomianowe dopasowania są najmniejsze), istnieje naturalne uogólnienie niejednorodnego próbkowania - jest po prostu znacznie droższe obliczeniowo.
Filtry Savitzky-Golay w ogóle
W przypadku standardowego filtra chodzi o dopasowanie wielomianu do lokalnego zestawu próbek [przy użyciu najmniejszych kwadratów], a następnie zastąpienie próbki środkowej wartością wielomianu o indeksie środkowym (tj. O wartości 0). Oznacza to, że standardowe współczynniki filtra SG można wygenerować przez odwrócenie macierzy Vandermonde wskazań próbek. Na przykład, aby wygenerować lokalne dopasowanie paraboliczne dla pięciu próbek (z lokalnymi wskazaniami -2, -1,0, 1, 2), układ równań projektowych A c = y byłby następujący:y0…y4 Ac=y
Próbkowanie Nonuniform
wówczas każda macierz projektowa będzie miała następującą postać:
źródło
„Jako tanią alternatywę można po prostu udawać, że punkty danych są równo rozmieszczone ...fa na całej szerokości N. okno punktowe jest mniejsze niż N./ 2----√ pomnożenie szumu pomiarowego w jednym punkcie, można zastosować tani sposób ”.
- Przepisy numeryczne s. 771–772
jeśli nastąpi zmiana
(wyprowadzanie kogoś?)
(„Udawaj równomiernie rozmieszczone” oznacza:± N/ 2 punkty wokół każdego t gdzie chcesz SavGol (t ), tja→ i . To może być oczywiste, ale dostało mnie na chwilę.)
weź najbliższe
nie przyciągaj wszystkich
źródło
Dowiedziałem się, że istnieją dwa sposoby wykorzystania algorytmu savitzky-golay w Matlabie. Raz jako filtr, a raz jako funkcja wygładzania, ale w zasadzie powinni zrobić to samo.
źródło
Jeśli to pomoże, zrobiłem implementację C metody opisanej przez Dataageist. Bezpłatnie korzystać na własne ryzyko.
źródło