Ruch średnia splot


29 września 2017 r. Średnia ruchoma przez splot Co oznacza średnia ruchoma i co jest dobre dla Jak przeprowadzić uśrednianie wykonywane przy użyciu splotu? Średnia ruchoma to prosta operacja używana zwykle do tłumienia szumu sygnału: ustawiamy wartość każdego punktu na średnia wartości w okolicy. Zgodnie ze wzorem: Tutaj x jest wejściem, a y jest sygnałem wyjściowym, podczas gdy rozmiar okna jest w, powinien być nieparzysty. Powyższa formuła opisuje operację symetryczną: próbki są pobierane z obu stron rzeczywistego punktu. Poniżej jest prawdziwy przykład życia. Punkt, na którym jest okno jest rzeczywiście czerwony. Wartości poza x mają być zerami: bawić się i zobaczyć efekty średniej ruchomej, spójrz na tę interaktywną demonstrację. Jak to zrobić przez splot Jak zauważyłeś, obliczanie prostej średniej ruchomej jest podobne do splotu: w obu przypadkach okno jest przesuwane wzdłuż sygnału, a elementy w oknie są podsumowane. Więc spróbuj tego zrobić, używając splotu. Użyj następujących parametrów: pożądane wyjście to: jako pierwsze podejście, spróbujmy to, co otrzymamy przez przekonanie sygnału x przez następujące k kernel: Wyjście jest dokładnie trzy razy większe niż oczekiwano. Można również zauważyć, że wartością wyjściową są podsumowanie trzech elementów w oknie. To dlatego, że podczas splotowania okna przesuwają się wzdłuż, wszystkie elementy są pomnożone przez jeden, a następnie podsumowane: yk 1 cdot x 1 cdot x 1 cdot x Aby uzyskać pożądane wartości y. wynik zostanie podzielony przez 3: przez wzór obejmujący podział: ale czy nie byłoby to optymalne do podziału podczas splotu Oto pomysł polegający na przekształceniu równania: użyjemy więc następującego jądra: w ten sposób będziemy uzyskać pożądane wyjście: Ogólnie: jeśli chcemy zrobić średnią ruchomej przez splot o wielkości okna w. posłużymy się następującym jądrem: prostą funkcją roboczą średniej ruchomej jest: przykładowe zużycie to: Średnia ruchoma jako filtr Średnia średnia ruchoma jest często wykorzystywana do wygładzania danych w obecności szumu. Zwykła średnia ruchoma nie zawsze jest rozpoznawana jako filtr Finite Impulse Response (FIR), chociaż jest to jeden z najpopularniejszych filtrów w przetwarzaniu sygnału. Traktowanie go jako filtra pozwala na porównanie go z, na przykład, filtrami windowed-sinc (zob. Artykuły dotyczące filtrów górnoprzepustowych i filtrów pasmowo-odbijających pasek na przykład). Główną różnicą tych filtrów jest to, że średnia ruchoma jest odpowiednia dla sygnałów, dla których przydatne informacje są zawarte w domenie czasowej. z których pomiary wygładzania są uśrednione. Z drugiej strony filtry Windowed-sinc są silnymi wykonawcami w dziedzinie częstotliwości. z wyrównaniem w przetwarzaniu dźwięku jako typowy przykład. Dokładniejsze porównanie obu typów filtrów w domenach czasowych a skuteczność filtrów w domenie częstotliwości. Jeśli masz dane, dla których ważne jest zarówno czas, jak i częstotliwość, możesz zajrzeć do Wariacje na temat Ruchowej Średniej. który przedstawia kilka ważonych wersji ruchomych średnich, które są lepsze w tym. Ruchome średnie długości (N) można zdefiniować tak, jak zazwyczaj jest to możliwe, przy czym aktualna próbka wyjściowa jest średnią z poprzednich (N) próbek. Widoczne jako filtr, średnia ruchoma powoduje splot sekwencji wejściowej (xn) z prostokątnym impulsem o długości (N) i wysokości (1N) (w celu uzyskania obszaru impulsu, a tym samym wzmocnienia filtra , jeden). W praktyce najlepiej jest podjąć (N) nieparzyste. Mimo, że średnia ruchoma może być obliczona przy użyciu parzystej liczby próbek, przy nieparzystej wartości dla (N) ma tę zaletę, że opóźnienie filtru będzie liczbą całkowitą próbek, ponieważ opóźnienie filtru (N) próbki są dokładnie ((N-1) 2). Średnia ruchoma może być wyrównana dokładnie do oryginalnych danych, przesuwając ją przez liczbę całkowitą próbek. Domena czasu Ponieważ średnia ruchoma jest splotem z prostokątnym impulsem, jej odpowiedź częstotliwościowa jest funkcją sinc. To sprawia, że ​​coś takiego jak podwójny filtr windowed-sinc, ponieważ jest to splot z impemem sinc, który powoduje prostokątną odpowiedź częstotliwościową. To pasuje do odpowiedzi częstotliwościowej, która powoduje, że średnia ruchoma jest słabą wartością w dziedzinie częstotliwości. Jednak w dziedzinie czasu działa bardzo dobrze. Dlatego doskonale nadaje się do wygładzania danych w celu usunięcia zakłóceń, przy jednoczesnym zachowaniu szybkiej reakcji krokowej (rysunek 1). Dla typowego, dodatniego białego szumu Gaussa (AWGN), który często zakłada się, próbki uśredniające (N) skutkują zwiększeniem współczynnika SNR o współczynnik (sqrt N). Ponieważ hałas poszczególnych próbek nie jest ze sobą związany, nie ma powodu, aby traktować każdą próbkę inaczej. W związku z tym, średnia ruchoma, która daje każdą próbkę o tej samej masie, pozbędzie się maksymalnej ilości hałasu przy danej ostrości. Wdrożenie Ponieważ jest to filtr FIR, średnia ruchoma może być realizowana przez splot. Będzie wtedy miał taką samą wydajność (lub jej brak), jak każdy inny filtr FIR. Jednakże, może on być również realizowany rekursywnie, w bardzo skuteczny sposób. Wynika to bezpośrednio z definicji, że ta formuła jest wynikiem wyrażeń dla (yn) i (yn1), tj. Gdy zauważymy, że zmiana pomiędzy (yn1) i (yn) polega na tym, że dodatkowy termin (xn1N) pojawia się na koniec, a termin (xn-N1N) jest usuwany od początku. W praktycznych zastosowaniach, często można zrezygnować z podziału przez (N) dla każdej kadencji przez kompensację uzyskanego zysku (N) w innym miejscu. Ta rekursywna implementacja będzie znacznie szybsza niż konwertowanie. Każda nowa wartość (y) może być obliczona z tylko dwoma dodatkami, zamiast dodawania (N), które byłyby konieczne do prostej implementacji definicji. Jedną rzeczą, na którą trzeba zwrócić uwagę na rekursywną implementację, są błędy zaokrąglania. Może to być problem z aplikacją, ale sugeruje również, że ta implementacja rekurencyjna będzie działać poprawnie przy wprowadzaniu liczby całkowitej niż w przypadku liczb zmiennoprzecinkowych. Jest to dość niezwykła, ponieważ implementacja zmiennoprzecinkowa jest zwykle prostsza. Koniec z tym wszystkim musi polegać na tym, że nigdy nie należy lekceważyć użyteczności prostej średniej ruchomości filtra w aplikacjach przetwarzania sygnału. 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 otrzymane filtry. Wypróbuj teraz. Użyj MATLAB, w jaki sposób mogę znaleźć 3-dniową średnią ruchu konkretnej kolumny matrycy i dodać średnią ruchomą do tej matrycy staram się obliczyć 3-dniową średnią ruchu od dołu do góry matrycy. Mam podany mój kod: Biorąc pod uwagę następujące macierzy a i maski: próbowałem wykonania komendy conv, ale otrzymuję błąd. Oto komenda conv, którą próbowałem użyć w drugiej kolumnie macierzy a: Wyjście I pragnienie jest podane w następującej matrycy: Jeśli masz jakieś sugestie, bardzo by to doceniłem. Dziękuję W kolumnie 2 matrycy a, obliczam średnią ruchu trzydniowego w następujący sposób i umieszczając wynik w kolumnie 4 matrycy a (zmieniłam nazwę matrycy jako 39desiredOutput39 tylko dla ilustracji). Średnia 3-dniowa z 17, 14, 11 wynosi 14, 3-dniowa średnia z 14, 11, 8 jest 11, 3-dniowa średnia z 11, 8, 5 jest równa 8, a średnia 3-dniowa z 8, 2 to 5. W czwartej kolumnie nie ma wartości w dolnych dwóch wierszach, ponieważ obliczenia dla 3-dniowej średniej ruchomej zaczynają się od dołu. Wyjście 39valid39 nie będzie wyświetlane do co najmniej 17, 14 i 11. Mamy nadzieję, że to ma sens ndash Aaron 12 czerwca 13 w 1:28 Ogólnie pomogłoby, gdybyś wykazał błąd. W tym przypadku robisz dwie rzeczy niewłaściwie: najpierw trzeba podzielić rozdzielczość na trzy (lub długość średniej ruchomej). Zauważ rozmiar c. Nie możesz po prostu zmieścić się w c. Typowym sposobem na uzyskanie średniej ruchomej byłoby użycie tego samego: ale to nie wygląda tak, jak chcesz. Zamiast tego musisz zmusić się do użycia kilku wierszy: szukam trochę wskazówek dotyczących używania CONVN do obliczania średnich ruchów w jednym wymiarze na matrycy 3d. Im trochę się na flipping jądra pod maską i mam nadzieję, że ktoś może być w stanie wyjaśnić zachowanie dla mnie. Podobne stanowisko, które wciąż mnie trochę mylące, jest tutaj: codziennie udostępniamy dane dotyczące rzek i pogody dla przełomu w różnych lokalizacjach źródłowych. Tak więc matryca jest taka, dim 1 (wiersze) reprezentują każde miejsce dim 2 (kolumny) reprezentują datę dim 3 (strony) reprezentują inny typ pomiaru (wysokość rzeki, przepływ, opady itp.) Cel jest próba używania CONVN do 21-dniowej średniej ruchomej w każdym miejscu, dla każdego punktu obserwacyjnego dla każdej zmiennej. Jak rozumiem, powinienem być w stanie używać aa jądra, tak jak: próbowałem bawić się i tworzyć inne jądro, które powinny również działać (myślę) i ustawić ker2 jako: Wyniki nie są całkiem dopasowane i zastanawiam się, czy mam wymiary niewłaściwe dla jądra. Wszelkie wskazówki są mile widziane. BTW, masz symetryczne jądro, więc flipping nie powinien mieć wpływu na wyjście splot. To, co zostało podane, to standardowe ruchomy jądro uśredniające, a więc splot powinien działać w celu znalezienia średniej ruchomej, jak można oczekiwać. ale trochę się mylę, ponieważ powiedziałeś, że powyższe nie działa ndash rayryeng 31 maja 15 na 20:17 To wszystko zależy od Ciebie :). Pytanie, które masz, jest ważnym (nie ma zamiaru przeznaczenia), który prowadzi wiele osób. Jeśli chcesz, aby to pozostało, napiszę odpowiedź, która podsumuje to, o czym mówiliśmy. Jeśli chcesz cofnąć usunięcie odpowiedzi, to w ogóle nie ma problemu. Daj mi znać, co chcesz zrobić ndash rayryeng 31 maja 15 w 20:39 Sądząc z kontekstu Twojego pytania, masz matrycę 3D i chcesz znaleźć ruchome średnie z każdego rzędu niezależnie od wszystkich plasterków 3D. Powyższy kod powinien działać (pierwszy przypadek). Jednak ważna flaga zwraca macierz, której rozmiar jest poprawny pod względem granic convolution. Zapoznaj się z pierwszym punktem wpisu, z którym się łączysz, aby uzyskać więcej informacji. W szczególności brakuje pierwszych 21 wpisów dla każdego wiersza ze względu na ważną flagę. Jądro convolution jądra nie jest w całości umieszczone wewnątrz rzędu macierzy i jej od tego momentu, w którym uzyskujesz trafne wyniki (nie ma przeznaczenia). Jeśli chcesz zobaczyć te wpisy na granicy, to musisz użyć tej samej flagi, jeśli chcesz zachować tę samą macierzę wielkości co wejście lub pełna flaga (która jest domyślna), która daje rozmiar wyjściowy zaczynając od najbardziej ekstremalnych krawędzi zewnętrznych, ale pamiętaj, że średnia ruchoma zostanie wykonana z kilkoma zerami, a więc pierwsze 21 wpisów nie będzie tym, czego się spodziewasz. Jeśli jednak Im interpretuje to, o co pytasz, to ważna flaga jest tym, czego chcesz, ale pamiętaj, że brakuje 21 wpisów, aby uwzględnić przypadki krawędzi. W sumie Twój kod powinien działać, ale uważaj na sposób interpretowania wyników. BTW, masz symetryczne jądro, więc flipping nie powinien mieć wpływu na wyjście splot. To, co zostało podane, to standardowe ruchomy jądro uśredniające, a więc splot powinien działać w celu znalezienia średniej ruchomej, jak można oczekiwać.

Comments

Popular Posts