Co to jest wygładzanie i jak mogę to zrobić?
Mam tablicę w Matlabie, która jest widmem wielkości sygnału mowy (wielkość 128 punktów FFT). Jak wygładzić to za pomocą średniej ruchomej? Z tego, co rozumiem, powinienem wziąć rozmiar okna określonej liczby elementów, przyjąć średnią, a to staje się nowym pierwszym elementem. Następnie przesuń okno w prawo o jeden element, weź średnią, która staje się drugim elementem i tak dalej. Czy to naprawdę tak działa? Sam nie jestem pewien, ponieważ jeśli to zrobię, w końcowym wyniku będę mieć mniej niż 128 elementów. Więc jak to działa i jak pomaga wygładzić punkty danych? Czy jest jakiś inny sposób na wygładzenie danych?
EDYCJA: link do pytania uzupełniającego
matlab
image-processing
Społeczność
źródło
źródło
Odpowiedzi:
Wygładzanie można wykonać na wiele sposobów, ale w bardzo podstawowych i ogólnych terminach oznacza to, że wyrównasz sygnał, mieszając jego elementy z sąsiadami. Trochę rozmazujesz / rozmywasz sygnał, aby pozbyć się szumu. Na przykład bardzo prostą techniką wygładzania byłoby ponowne obliczenie każdego elementu sygnału
f(t)
na 0,8 pierwotnej wartości plus 0,1 każdego z jego sąsiadów:Zwróć uwagę, jak mnożniki lub wagi sumują się do jednego. Jeśli więc sygnał jest dość stały, wygładzanie go nie zmienia. Ale jeśli sygnał zawiera nagłą gwałtowną zmianę, wówczas wkład sąsiadów pomoże nieco usunąć ten hałas.
Wagi używane w tej funkcji ponownego obliczania można nazwać jądrem . Jednowymiarowa funkcja Gaussa lub dowolne inne podstawowe jądro powinny zrobić w twoim przypadku.
Ładny przykład jednego szczególnego rodzaju wygładzania:
Powyżej: sygnał
wygładzony Poniżej: wygładzony sygnał
Przykłady kilku jąder:
źródło
Oprócz ładnej odpowiedzi Junuxxa chciałbym upuścić kilka notatek.
Wygładzanie wiąże się z filtrowaniem (niestety dość niejasny artykuł w Wikipedii ) - należy wybrać wygładzanie na podstawie jego właściwości.
Jednym z moich ulubionych jest filtr mediany . To jest przykład filtra nieliniowego. Ma kilka interesujących właściwości, zachowuje „krawędzie” i jest dość solidny przy dużym hałasie.
Jeśli masz model, w jaki sposób twój sygnał zachowuje się, filtr Kalmana jest wart spojrzenia. Jego wygładzenie jest w rzeczywistości szacunkiem Bayesowskiego maksymalnego prawdopodobieństwa sygnału na podstawie obserwacji.
źródło
Wygładzanie oznacza wykorzystanie informacji z sąsiednich próbek w celu zmiany relacji między sąsiednimi próbkami. W przypadku wektorów skończonych na końcach nie ma sąsiednich informacji z jednej strony. Masz do wyboru: nie wygładzaj / filtruj końców, akceptuj krótszy wynikowy wygładzony wektor, twórz dane i wygładzaj nimi (zależy od dokładności / użyteczności jakichkolwiek prognoz poza końcami), lub może używaj różnych asymetrycznych jąder wygładzających w końce (co i tak powoduje skrócenie zawartości informacyjnej w sygnale).
źródło
Możesz znaleźć cały kod Matlaba do wygładzania ruchomej średniej filtru dla różnych długości uderzeń. www.gaussianwaves.com/2010/11/moving-average-filter-ma-filter-2/
źródło
Inni wspominali o tym , jak wygładzasz, chciałbym wspomnieć dlaczego wygładzanie działa.
Jeśli odpowiednio przeskanujesz sygnał, będzie on się nieznacznie różnić między próbkami (sample = punkty czasowe, piksele itp.) I oczekuje się, że będzie ogólnie gładki. Innymi słowy, twój sygnał zawiera kilka wysokich częstotliwości, tj. Składniki sygnału, które różnią się z częstotliwością podobną do częstotliwości próbkowania.
Pomiary są jednak często niszczone przez hałas. W pierwszym przybliżeniu zwykle uważamy, że hałas jest zgodny z rozkładem Gaussa ze średnim zerem i pewnym odchyleniem standardowym, które jest po prostu dodawane na szczycie sygnału.
Aby zredukować szum w naszym sygnale, zwykle przyjmujemy następujące cztery założenia: szum jest losowy, nie jest skorelowany między próbkami, ma średnią zero, a sygnał jest wystarczająco nadpróbkowany. Przy tych założeniach możemy zastosować filtr średniej ruchomej.
Rozważmy na przykład trzy kolejne próbki. Ponieważ sygnał jest bardzo nadpróbkowany, można uznać, że sygnał podstawowy zmienia się liniowo, co oznacza, że średnia sygnału w trzech próbkach byłaby równa rzeczywistemu sygnałowi w środkowej próbce. Natomiast szum ma średnią zero i jest nieskorelowany, co oznacza, że jego średnia powinna dążyć do zera. Możemy zatem zastosować trzypróbkowy filtr średniej przesuwnej, w którym każdą próbkę zastępujemy średnią między nią a jej dwoma sąsiadującymi sąsiadami.
Oczywiście, im większe okno, tym większy poziom szumu wyniesie się do zera, ale tym mniej utrzymuje się nasze założenie o liniowości prawdziwego sygnału. Dlatego musimy dokonać kompromisu. Jednym ze sposobów na uzyskanie najlepszego z obu światów jest zastosowanie średniej ważonej, w której dalszym próbkom podajemy mniejsze ciężary, dzięki czemu uśredniamy efekty szumowe z większych zakresów, a jednocześnie nie ważymy zbytnio prawdziwego sygnału, gdy odbiega on od naszej liniowości założenie.
To, jak powinieneś ustawić ciężary, zależy od szumu, sygnału i wydajności obliczeniowej oraz, oczywiście, od kompromisu między pozbyciem się szumu a włączeniem sygnału.
Należy zauważyć, że w ciągu ostatnich kilku lat wykonano wiele pracy, aby umożliwić nam rozluźnienie niektórych z czterech założeń, na przykład poprzez zaprojektowanie schematów wygładzania ze zmiennymi oknami filtrów (dyfuzja anizotropowa) lub schematów, które tak naprawdę nie używają okien w ogóle (środki nielokalne).
źródło