co wygładza w bardzo podstawowych terminach


17

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


dla widma, które prawdopodobnie chcesz uśrednić razem (w wymiarze czasowym) wielu widm zamiast średniej ruchomej wzdłuż osi częstotliwości pojedynczego widma
endolith

@endolith oba są prawidłowymi technikami. Uśrednianie w dziedzinie częstotliwości (czasami zwane Periodogramem Danielle) jest takie samo jak okienkowanie w dziedzinie czasu. Uśrednianie wielu periodogramów („spektrów”) jest próbą naśladowania uśredniania zespołu wymaganego dla prawdziwego Periodogramu (nazywa się to Periodogramem Welcha). Ponadto, ze względu na semantykę, argumentowałbym, że „wygładzanie” to niecodzienne filtrowanie dolnoprzepustowe. Zobacz Filtrowanie Kalmana vs wygładzanie Kalmana, filtrowanie Wienera v wygładzanie Wienera itp. Istnieje nietypowe rozróżnienie i zależy ono od implementacji.
Bryan,

Odpowiedzi:


23

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:

f'(t) = 0.1*f(t-1) + 0.8*f(t) + 0.1*f(t+1)

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ł

wprowadź opis zdjęcia tutaj

Przykłady kilku jąder:

wprowadź opis zdjęcia tutaj


więc czy jest to ważona średnia ruchoma? Czy nazywa się to posiadaniem okna o rozmiarze 3? Co z pierwszym i ostatnim elementem? A jak to się zmieni, jeśli mam tablicę 128 elementów i chcę użyć okna 16 lub 32 elementów?

@ user13267: Tak, można powiedzieć, że wygładzanie jądra jest ważoną średnią ruchomą. Jeśli używasz jednolitego jądra (patrz drugi obraz), jest to zwykła średnia ruchoma. Masz rację co do rozmiaru okna. Do radzenia sobie z krawędziami istnieją trzy podstawowe podejścia: 1) uzupełnienie danych zerami, 2) powtórzenie ostatniej wartości, 3) odbicie lustrzane sygnału. We wszystkich przypadkach robisz pewne udawane dane, aby twoje jądro nie popadło w nicość.
Junuxx

czy zerowe wypełnienie nie liczy się jako popadnięcie w nicość? Pod koniec procesu średniej ruchomej mój nowy „uśredniony” zestaw danych powinien mieć taką samą liczbę danych jak oryginał, prawda? to jeśli zeruję pad na początku lub na końcu, lub powtórzę ostatnie dane, czy nie będzie to odchylało średniej wartości na krawędziach tablicy? W jaki sposób dublowanie sygnału pomogłoby pod względem liczby terminów danych? Czy istnieje jakikolwiek prosty samouczek dla tego miejsca, który pokazuje, jak przebiega proces, powiedzmy, 32 punktów danych i rozmiar okna 4 lub 5?

2
Jeśli chcesz, aby wygładzony zestaw danych miał taką samą długość jak oryginalny zestaw danych, musisz „uzupełnić” dane w punktach końcowych. Każdy wybór sposobu tworzenia tych danych w jakiś sposób wpływa na średnią. Traktowanie danych poza zakresem jako lustro rzeczywistego zestawu danych (tj. Zakładając, że próbka N + 1 jest taka sama jak N-1, N + 2 = N-2 itd.) Zachowa charakterystykę widma częstotliwości końcowe części sygnału, przy założeniu, że powtórzenie zera lub zera będzie powodować, że wszystkie częstotliwości zejdą na końcach.
Russell Borogove

8

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.


4

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).


3

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/


1

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).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.