Tuesday 21 November 2017

Przenoszenie algorytm filtr


Średnia ruchoma jako filtr Średnia ruchoma jest często używana do wygładzania danych w obecności szumu. Prosta średnia ruchoma nie zawsze jest rozpoznawana jako filtr odpowiedzi na skończoną odpowiedź impulsową (FIR), podczas gdy w rzeczywistości jest to jeden z najczęstszych filtrów w przetwarzaniu sygnału. Traktowanie go jako filtra pozwala na porównanie go z np. Filtrami okienkowymi (patrz artykuły na temat filtrów dolnoprzepustowych, górnoprzepustowych i pasmowych oraz filtrów z odrzucaniem pasmowym na przykład). Główną różnicą w porównaniu z tymi filtrami jest to, że średnia ruchoma jest odpowiednia dla sygnałów, dla których użyteczne informacje są zawarte w dziedzinie czasu. w tym dobrym przykładem są pomiary wygładzania poprzez uśrednianie. Z drugiej strony filtry Window-sinc są silnymi wykonawcami w dziedzinie częstotliwości. z wyrównaniem w przetwarzaniu audio jako typowym przykładem. Istnieje bardziej szczegółowe porównanie obu typów filtrów w dziedzinie Time Domain vs. Performance Domain of Filters w zakresie częstotliwości. Jeśli masz dane, dla których zarówno czas, jak i dziedzina częstotliwości są ważne, możesz chcieć rzucić okiem na wariacje na temat średniej ruchomej. który przedstawia kilka ważonych wersji średniej ruchomej, które są w tym lepsze. Ruchoma średnia długość (N) może być zdefiniowana jako zapisana tak, jak zwykle jest realizowana, z bieżącą próbką wyjściową jako średnia z poprzednich próbek (N). Średnia ruchoma, widziana jako filtr, wykonuje splot sekwencji wejściowej (xn) z prostokątnym impulsem długości (N) i wysokości (1N) (aby utworzyć obszar impulsu, a tym samym wzmocnienie filtra , jeden). W praktyce najlepiej jest przyjmować (N) nieparzyste. Chociaż średnią ruchomą można również obliczyć przy użyciu parzystej liczby próbek, użycie wartości nieparzystej dla (N) ma tę zaletę, że opóźnienie filtra będzie liczbą całkowitą próbek, ponieważ opóźnienie filtra z (N) próbki to dokładnie ((N-1) 2). Średnia ruchoma może być następnie wyrównana dokładnie z oryginalnymi danymi, przesuwając ją o liczbę całkowitą próbek. Domena czasu Ponieważ średnia ruchoma jest splotem z prostokątnym impulsem, jego charakterystyka częstotliwościowa jest funkcją sinc. To sprawia, że ​​jest to coś w rodzaju podwójnego filtra okienkowego, ponieważ jest to splot z impulsem sinc, który powoduje prostokątną odpowiedź częstotliwościową. Jest to ta odpowiedź częstotliwościowa, która sprawia, że ​​średnia ruchoma jest słabym wykonawcą w dziedzinie częstotliwości. Jednak działa bardzo dobrze w dziedzinie czasu. Dlatego idealnie nadaje się do wygładzania danych w celu usuwania szumów, zachowując jednocześnie szybką reakcję skokową (rysunek 1). Dla typowego białego szumu białkowego o dodatnim (AWGN), który jest często przyjmowany, próbki uśredniające (N) mają wpływ na zwiększenie współczynnika SNR o współczynnik (sqrt N). Ponieważ hałas dla poszczególnych próbek jest nieskorelowany, nie ma powodu, aby traktować każdą próbkę w inny sposób. W związku z tym średnia ruchoma, która nadaje każdej próbce taką samą wagę, pozbywa się maksymalnej wartości szumu dla danej ostrości kroku. Wdrożenie Ponieważ jest filtrem FIR, średnią ruchomą można wdrożyć za pomocą splotu. Będzie wtedy miał taką samą wydajność (lub jej brak), jak każdy inny filtr FIR. Jednak może być również realizowany rekursywnie, w bardzo wydajny sposób. Wynika to bezpośrednio z definicji, że formuła ta jest wynikiem wyrażeń dla (yn) i (yn1), tzn. Gdy zauważymy, że zmiana między (yn1) i (yn) jest taka, że ​​dodatkowy termin (xn1N) pojawia się na koniec, podczas gdy termin (xn-N1N) jest usuwany od początku. W zastosowaniach praktycznych często można pominąć podział przez (N) dla każdego okresu, kompensując wynikowy zysk (N) w innym miejscu. Ta rekurencyjna implementacja będzie znacznie szybsza niż splot. Każda nowa wartość (y) może zostać obliczona przy użyciu tylko dwóch dodatków zamiast (N) dodatków, które byłyby niezbędne do prostego wdrożenia definicji. Jedną rzeczą, na którą należy zwrócić uwagę przy rekursywnej implementacji, jest to, że błędy zaokrąglania będą się kumulować. To może, ale nie musi, być problemem dla twojej aplikacji, ale oznacza również, że ta rekursywna implementacja będzie działać lepiej z implementacją liczb całkowitych niż z liczbami zmiennoprzecinkowymi. Jest to dość niezwykłe, ponieważ implementacja zmiennoprzecinkowa jest zwykle prostsza. Wniosek musi być taki, że nigdy nie należy lekceważyć użyteczności prostego filtra średniej ruchomej w zastosowaniach przetwarzania sygnałów. Narzędzie do projektowania filtrów Ten artykuł jest uzupełniony o narzędzie do projektowania filtrów. Eksperymentuj z różnymi wartościami dla (N) i wizualizuj uzyskane filtry. Wypróbuj terazZasadniczo mam tablicę wartości takich jak ta: powyższa tablica jest uproszczona, zbieram 1 wartość na milisekundę w moim prawdziwym kodzie i muszę przetworzyć wyjście na algorytmie, który napisałem, aby znaleźć najbliższy szczyt przed punktem w czasie . Moja logika kończy się niepowodzeniem, ponieważ w moim przykładzie powyżej 0.36 jest prawdziwym szczytem, ​​ale mój algorytm będzie wyglądał wstecz i zobaczy ostatnią liczbę 0.25 jako szczyt, ponieważ przed nią jest spadek do 0.24. Celem jest przyjęcie tych wartości i zastosowanie do nich algorytmu, który wygładzi je nieco, tak żebym miał więcej wartości liniowych. (tj: Id jak moje wyniki być kręty, nie jaggedy) Powiedziano mi, aby zastosować wykładniczy filtr średniej ruchomej do moich wartości. Jak mogę to zrobić? Bardzo trudno jest mi czytać równania matematyczne, z kodem radzę sobie znacznie lepiej. Jak przetwarzać wartości w mojej tablicy, stosując wykładnicze obliczenia średniej ruchomej, aby je wyrównać zapytano 8 lutego 12 o 20:27 Obliczanie wykładniczej średniej kroczącej. musisz zachować pewien stan i potrzebujesz parametru strojenia. To wymaga małej klasy (zakładając, że korzystasz z Java 5 lub nowszej wersji): Utwórz instancję z żądanym parametrem zaniku (możesz ustawić strojenie od 0 do 1), a następnie użyj funkcji average () do filtrowania. Czytając stronę o nawrocie matematycznym, wszystko, co naprawdę trzeba wiedzieć, kiedy zamienia się ją w kod, jest takie, że matematycy lubią pisać indeksy w tablicach i sekwencjach z indeksami dolnymi. (Są też inne zapisy, które nie pomagają.) Jednak EMA jest dość prosta, ponieważ wystarczy zapamiętać jedną starą wartość, nie wymagającą skomplikowanych tablic stanów. odpowiedział 08 lutego 12 o 20:42 TKKocheran: Dość dużo. Czy to nie jest miłe, gdy rzeczy mogą być proste (jeśli zaczynasz z nową sekwencją, zdobądź nową średnią). Zauważ, że kilka pierwszych haseł w uśrednionej sekwencji będzie przeskakiwało trochę ze względu na efekty graniczne, ale dostajesz te z innymi ruchomymi średnimi także. Jednak dobrą zaletą jest to, że można zawinąć logikę średniej ruchomej do uśredniającego i eksperymentować, nie zakłócając zbytnio reszty programu. ndash Donal Fellows 09 lutego 12 o 0:06 Mam trudności ze zrozumieniem twoich pytań, ale i tak postaram się odpowiedzieć. 1) Jeśli twój algorytm znalazł 0.25 zamiast 0.36, to jest źle. Jest źle, ponieważ zakłada monotoniczny wzrost lub spadek (który zawsze rośnie lub zawsze spada). O ile nie wytypujesz WSZYSTKICH twoich danych, twoje punkty danych --- podczas ich prezentacji --- są nieliniowe. Jeśli naprawdę chcesz znaleźć maksymalną wartość pomiędzy dwoma punktami w czasie, podziel tablicę od tmin do tmax i znajdź maksimum tego podbarwa. 2) Teraz pojęcie średnich kroczących jest bardzo proste: wyobraź sobie, że mam następującą listę: 1.4, 1.5, 1.4, 1.5, 1.5. Mogę go wygładzić, biorąc średnią z dwóch liczb: 1.45, 1.45, 1.45, 1.5. Zauważ, że pierwsza liczba to średnia z 1,5 i 1,4 (druga i pierwsza liczba), druga (nowa lista) to średnia z 1,4 i 1,5 (trzecia i druga stara lista), a trzecia (nowa lista) to średnio 1,5 i 1,4 (czwarty i trzeci) i tak dalej. Mogłem zrobić okres trzy lub cztery, lub n. Zwróć uwagę, że dane są znacznie płynniejsze. Dobrym sposobem, aby zobaczyć średnie ruchome w pracy, jest przejście do Google Finance, wybór akcji (wypróbuj Tesla Motors pretty volatile (TSLA)) i kliknij technicznych na dole wykresu. Wybierz średnią ruchomą z danym okresem i wykładniczą średnią kroczącą, aby porównać różnice. Wykładnicza średnia krocząca jest tylko kolejnym rozwinięciem tego, ale waży starsze dane mniej niż nowe dane, jest to sposób na odchylenie wygładzania w kierunku tyłu. Proszę przeczytać wpis w Wikipedii. Jest to raczej komentarz niż odpowiedź, ale małe pole komentarza było niewielkie. Powodzenia. Jeśli masz problemy z matematyką, możesz użyć prostej średniej ruchomej zamiast wykładniczej. Wynik wyjściowy będzie więc ostatnim x terminami podzielonymi przez x. Nieprawdziwy kod pseudokodowy: pamiętaj, że będziesz musiał obsługiwać początkowe i końcowe części danych, ponieważ wyraźnie nie możesz uśrednić ostatnich 5 warunków, gdy jesteś na drugim punkcie danych. Ponadto istnieją skuteczniejsze sposoby obliczania tej średniej ruchomej (suma suma - najstarsze najnowsze), ale ma to na celu uzyskanie koncepcji na temat tego, co się dzieje. odpowiedział 08 lutego 12 o 20: 41Moving Average Filter (filtr MA) Ładowanie. Filtr średniej ruchomej to prosty filtr dolnoprzepustowy FIR (Finite Impulse Response), powszechnie stosowany do wygładzania tablicy próbkowanych sygnałów danych. Przyjmuje M próbek danych wejściowych na raz i pobiera średnią z tych M-próbek i generuje pojedynczy punkt wyjściowy. Jest to bardzo prosta struktura LPF (filtr dolnoprzepustowy), która jest przydatna naukowcom i inżynierom do filtrowania niechcianego hałaśliwego komponentu z zamierzonych danych. Wraz ze wzrostem długości filtra (parametr M) zwiększa się gładkość wyjścia, podczas gdy ostre przejścia w danych stają się coraz bardziej tępe. Oznacza to, że ten filtr ma doskonałą odpowiedź w dziedzinie czasu, ale słabą odpowiedź częstotliwościową. Filtr MA wykonuje trzy ważne funkcje: 1) Pobiera M punktów wejściowych, oblicza średnią z tych M-punktów i generuje pojedynczy punkt wyjściowy 2) Z powodu obliczeń związanych z obliczaniem. filtr wprowadza określoną ilość opóźnienia 3) Filtr działa jako filtr dolnoprzepustowy (z niską odpowiedzią częstotliwościową i dobrą odpowiedzią w dziedzinie czasu). Kod Matlaba: następujący kod Matlaba symuluje odpowiedź w czasie w odniesieniu do punktu ruchomej średniej klasy M-point, a także kreśli odpowiedź częstotliwościową dla różnych długości filtrów. Odpowiedź w dziedzinie czasu: Na pierwszym wykresie mamy dane wejściowe, które trafiają do filtra średniej ruchomej. Wejście jest głośne, a naszym celem jest zmniejszenie hałasu. Następna figura jest odpowiedzią wyjściową 3-punktowego filtra średniej ruchomej. Z rysunku można wywnioskować, że trzypunktowy filtr średniej ruchomej nie przyczynił się do odfiltrowania hałasu. Zwiększamy odczepy filtrów do 51-punktów i widzimy, że hałas na wyjściu znacznie się zmniejszył, co przedstawiono na następnym rysunku. Zwiększamy pobory o kolejne 101 i 501 i możemy zauważyć, że nawet pomimo tego, że hałas jest prawie zerowy, przejścia są drastycznie stępione (obserwuj nachylenie po obu stronach sygnału i porównaj je z idealną zmianą ściany ceglanej w nasz wkład). Pasmo przenoszenia: na podstawie odpowiedzi częstotliwościowej można stwierdzić, że zwinięcie jest bardzo wolne, a tłumienie pasma zatrzymania nie jest dobre. Biorąc pod uwagę to tłumienie pasma zatrzymania, filtr o średniej ruchomej nie może oddzielić jednego pasma częstotliwości od drugiego. Jak wiemy, dobra wydajność w dziedzinie czasu skutkuje słabą wydajnością w dziedzinie częstotliwości i na odwrót. Krótko mówiąc, średnia krocząca jest wyjątkowo dobrym filtrem wygładzającym (działanie w dziedzinie czasu), ale wyjątkowo złym filtrem dolnoprzepustowym (działanie w dziedzinie częstotliwości). Linki zewnętrzne: Polecane książki: Główny pasek boczny

No comments:

Post a Comment