Tuesday 12 December 2017

Ruchomy średni filtr splot


Korzystając z MATLAB, w jaki sposób mogę znaleźć 3-dniową średnią ruchomą konkretnej kolumny macierzy i dołączyć średnią ruchomą do tej macierzy, próbuję obliczyć 3-dniową średnią ruchomą od dołu do góry macierzy. Dostarczyłem mój kod: Biorąc pod uwagę następujące macierzy a i maski: Próbowałem wykonania polecenia conv, ale otrzymuję błąd. Oto polecenie conv, które próbowałem użyć w drugiej kolumnie macierzy a: Dane wyjściowe, które pragnę, są podane w następującej macierzy: Jeśli masz jakieś sugestie, byłbym bardzo wdzięczny. Dziękuję W kolumnie 2 macierzy a, obliczam 3-dniową średnią ruchomą w następujący sposób i umieszczam wynik w kolumnie 4 macierzy a (zmieniłem nazwę macierzy na 39definiowaną3 tylko dla ilustracji). Średnia z 3 dni to 17, 14, 11 to 14, średnia z 3 dni to 14, 11, 8 to 11, średnia z 3 dni to 11, 8, 5 to 8, a średnia z 3 dni to 8, 5, 2 to 5. Nie ma wartości w dolnych 2 wierszach dla czwartej kolumny, ponieważ obliczenia dla 3-dniowej średniej ruchomej rozpoczynają się od dołu. Wynik 39 invalid39 nie zostanie pokazany przed co najmniej 17, 14 i 11. Mam nadzieję, że to ma sens ndash Aaron Jun 12 13 o 1:28 Ogólnie rzecz biorąc, pomógłbyś, gdybyś pokazał błąd. W tym przypadku robisz dwie rzeczy źle: Najpierw splot musi być podzielony przez trzy (lub długość średniej ruchomej) Po drugie, zwróć uwagę na rozmiar c. Nie możesz po prostu dopasować c do a. Typowym sposobem uzyskania średniej ruchomej byłoby użycie tego samego: ale to nie wygląda tak, jak chcesz. Zamiast tego jesteś zmuszony użyć kilku linii: 29 września 2017 r. Średnia ruchoma przez splot Co to jest średnia ruchoma i co jest dobre dla Jak poruszające się uśrednianie odbywa się za pomocą splotu Średnia ruchoma to prosta operacja używana zwykle do tłumienia hałasu signal: ustawiamy wartość każdego punktu na średnią wartości w jej sąsiedztwie. Przez formułę: tutaj x jest wejściem, a y jest sygnałem wyjściowym, natomiast rozmiar okna to w, ma być nieparzysty. Powyższy wzór opisuje operację symetryczną: próbki są pobierane z obu stron rzeczywistego punktu. Poniżej znajduje się przykład życia. Punkt, w którym układane jest okno, jest czerwony. Wartości spoza x mają być zerami: Aby obejść i zobaczyć efekty średniej ruchomej, spójrz na tę interaktywną demonstrację. Jak to zrobić przez splot Jak można zauważyć, obliczenie prostej średniej ruchomej jest podobne do splotu: w obu przypadkach okno przesuwa się wzdłuż sygnału, a elementy w oknie są podsumowywane. Spróbuj więc zrobić to samo, używając splotu. Użyj następujących parametrów: Żądane wyjście: Jako pierwsze podejście, spróbujmy tego, co otrzymamy, zawiązując sygnał x przez następujące k jądro: Wynik jest dokładnie trzy razy większy niż oczekiwany. Można również zauważyć, że wartości wyjściowe są podsumowaniem trzech elementów w oknie. Dzieje się tak, ponieważ podczas splotu okno przesuwa się wzdłuż, wszystkie elementy w nim są mnożone przez jeden, a następnie podsumowywane: yk 1 cdot x 1 cdot x 1 cdot x Aby uzyskać pożądane wartości y. wynik powinien być podzielony przez 3: Przez formułę zawierającą podział: Ale czy nie byłoby optymalnie zrobić podział podczas splotu Oto przychodzi pomysł poprzez zmianę równania: Więc użyjemy następującego k jądra: W ten sposób będziemy uzyskać pożądany wynik: Ogólnie: jeśli chcemy zrobić średnią ruchomą przez splot o wielkości okna w. użyjemy następującego k-kernela: Prostą funkcją wykonującą średnią ruchomą jest: Przykład użycia: Ś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. Spróbuj teraz

No comments:

Post a Comment