Kiedy filtr Kalmana da lepsze wyniki niż zwykła średnia ruchoma?

14

Niedawno wdrożyłem filtr Kalmana na prostym przykładzie pomiaru położenia cząstek z losową prędkością i przyspieszeniem. Odkryłem, że filtr Kalmana działa dobrze, ale zadałem sobie pytanie, jaka jest różnica między tym a zwykłą średnią ruchomą? Odkryłem, że jeśli użyję okna z około 10 próbek, których średnia ruchoma przewyższa filtr Kalmana, i próbuję znaleźć przykład zastosowania filtra Kalmana, ma tę zaletę, że po prostu używa średniej ruchomej.

Wydaje mi się, że średnia ruchoma jest o wiele bardziej intuicyjna niż filtr Kalmana i możesz zastosować ją na ślepo do sygnału, nie martwiąc się o mechanizm przestrzeni stanów. Mam wrażenie, że brakuje mi czegoś fundamentalnego i byłbym wdzięczny za każdą pomoc, jaką ktoś mógłby zaoferować.

dvreed77
źródło
Widziałem ten post, ale moje pytanie dotyczy przykładu, kiedy filtr Kalmana da mi lepsze wyniki niż średnia ruchoma.
dvreed77
Jeśli średnia ruchoma jest wystarczająca w twojej aplikacji, to użyj jej, nie potrzebujesz filtra Kalmana (KF). Przy pewnych założeniach KF zapewnia najlepsze możliwe oszacowanie. Albo te założenia nie mają zastosowania w Twojej aplikacji, albo implementacja KF powinna zostać sprawdzona.
Ali
Jakie są te założenia? Hałas Gaussa? Jeśli tak, to właśnie dodaje moja symulacja. Mój kod jest nieco zmodyfikowaną wersją kodu podanego mi z klasy przetwarzania sygnału, i sprawdziłem go z kilkoma innymi źródłami, a moje równania aktualizacji i prognozowania powinny być poprawne. Zastanawiam się, czy powodem, dla którego średnia ruchoma działa lepiej, jest to, że używa ostatnich 10 próbek zamiast tylko ostatniej próbki, której używa KF. Chociaż myślę, że kowariancja błędu staje się coraz ściślejsza z każdą dodatkową próbką, więc jestem mylony z tym, jak IZ radzi sobie lepiej.
dvreed77
a jeśli robi to różnicę, kiedy mówię „zewnętrzna”, to znaczy, że MSE jest mniejszy przy użyciu średniej ruchomej.
dvreed77

Odpowiedzi:

4

Szacunki podane przez średnią ruchomą będą opóźnione w stosunku do stanu rzeczywistego.

Powiedzmy, że chcesz zmierzyć wysokość samolotu wznoszącego się ze stałą prędkością i masz głośne (Gaussowskie) pomiary wysokości. Średnia z głośnych pomiarów wysokości w danym przedziale czasu prawdopodobnie da dobre oszacowanie, gdzie samolot znajdował się w połowie tego przedziału czasu .

Jeśli użyjesz dłuższego przedziału czasu dla średniej ruchomej, średnia będzie bardziej dokładna, ale oszacuje wysokość samolotu wcześniej. Jeśli użyjesz mniejszego przedziału czasu dla średniej ruchomej, średnia będzie mniej dokładna, ale oszacuje wysokość samolotu w późniejszym czasie.

To powiedziawszy, opóźnienie średniej ruchomej może nie stanowić problemu w niektórych aplikacjach.

edycja: ten post zadaje to samo pytanie i ma więcej odpowiedzi i zasobów

Garbarz
źródło
2

Odkryłem, że używając oryginalnych parametrów, których użyłem do ustawienia problemu, średnia ruchoma działała lepiej, ale kiedy zacząłem grać z parametrami, które zdefiniowały mój model dynamiczny, zauważyłem, że filtr Kalmana działa znacznie lepiej. Teraz, gdy mam już konfigurację, aby zobaczyć efekty, jakie odgrywają parametry, myślę, że zyskam lepszą intuicję na temat tego, co się właściwie dzieje. Dziękuję tym, którzy odpowiedzieli i przepraszam, jeśli moje pytanie było / jest niejasne.

dvreed77
źródło
1
Pomocne może być zaangażowanie innych osób w pytanie, jeśli w odpowiedzi umieścisz powtarzalny kod zabawki, aby umożliwić im „zobaczenie go w działaniu”. Osobiście moje odpowiedzi, które inni ocenili najwyżej, mają zazwyczaj powtarzalną treść.
EngrStudent