Monday 11 December 2017

Matematyczny ruch średnia splot


Szukam trochę wskazówki dotyczące używania CONVN do obliczania ruchome średnie 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 podano, 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 granicach, 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 zatem konwertacja powinna działać w celu znalezienia średniej ruchomej, jak można oczekiwać.29 Wrzesień 2017 Średnia przemieszczeniowa przez splot Co to jest średnia ruchoma i co jest dobre dla Jak przeprowadzić uśrednianie przeprowadzone przy użyciu convolution Średnia ruchoma to prosta operacja stosowana zwykle do tłumienia szumu sygnału: ustawiamy wartość każdego punktu na średnią wartości w jej sąsiedztwie. Według wzoru: Tutaj x jest wejściem, a y jest sygnałem wyjściowym, podczas gdy rozmiar okna jest w, ma 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ę poniższym jądrem: prostą funkcją roli średniej ruchomej jest: przykładowe użycie: użycie MATLAB, jak mogę znaleźć 3-dniową średnią ruchliwą konkretnej kolumny macierzy i dodać średnią ruchomej do tej macierzy Próbuję obliczyć 3-dniową średnią ruchu od dołu do góry macierzy. 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 bym to docenił. 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ż obliczanie dla 3-dniowej średniej ruchomej zaczyna 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 zmuszeni są używać kilku linii: Przewodnik Naukowca i Inżynierowie ds. Przetwarzania Przetwarzania Danych Cyfrowych Autor: Steven W. Smith, Ph. D. Jak sama nazwa wskazuje, średni ruchowy filtr działa przez uśrednienie kilku punktów z sygnału wejściowego, aby uzyskać każdy punkt sygnału wyjściowego. W formie równania jest to napisane: Gdzie jest sygnał wejściowy, jest sygnałem wyjściowym, a M jest liczbą punktów przeciętnie. Na przykład w 5-punktowym średnim filtrze, punkt 80 sygnału wyjściowego jest podany przez: Jako alternatywę, grupa punktów z sygnału wejściowego może być wybrana symetrycznie wokół punktu wyjściowego: Odpowiada to zmianie sumy w równaniu . 15-1 z: j0 do M1, do: j - (M-1) 2 do (M-1) 2. Na przykład, w 10-punktowym, średnim filtrze, indeks, j. może działać od 0 do 11 (uśrednianie po jednej stronie) lub od -5 do 5 (symetryczne uśrednianie). Symetryczne uśrednienie wymaga, aby M był nieparzystą liczbą. Programowanie jest nieco łatwiejsze dzięki punktom tylko z jednej strony, co powoduje względną zmianę sygnału wejściowego i wyjściowego. Należy zauważyć, że średni ruchowy filtr jest splotem za pomocą bardzo prostego jądra filtru. Na przykład 5-punktowy filtr ma jądro filtra: 82300, 0, 15, 15, 15, 15, 15, 0, 08230. Oznacza to, że średni ruchowy filtr jest splotem sygnału wejściowego z prostokątnym impulsem mającym obszar jednego. Tabela 15-1 przedstawia program do wdrożenia filtra średniej ruchomej.

No comments:

Post a Comment