Czytanie wykresu przekształcenia Wavelet

15

Mam problem ze zrozumieniem, jak odczytać wykres wykreślony przez transformację falkową,

oto mój prosty kod Matlab,

load noissin;
% c is a 48-by-1000 matrix, each row 
% of which corresponds to a single scale.
c = cwt(noissin,1:48,'db4','plot');

wprowadź opis zdjęcia tutaj

Najjaśniejsza część oznacza, że ​​skalowalny rozmiar kawy jest większy, ale jak dokładnie mogę zrozumieć tę fabułę, co się tam dzieje? Proszę mi pomóc.

Sufiyan Ghori
źródło
próbowałem następujący kod w Matlab t = 0: 0,001: 2; y = sin (2 * pi * 20 * t) wname = 'cmor0,5-1' skala = 1: 0,1: 80; cwt (y, skala, nazwa, „fabuła”); Mam śledzenie fabuły! wprowadź tutaj opis obrazu rzeczywiste i urojone części przedstawiające luki, które są obserwowane w CWT za pomocą falki Morla. W ten sposób CWT ze złożoną falą Morleta również zawiera informacje o fazie. Jak to wytłumaczyć?

Odpowiedzi:

15

Wyobraź sobie przez sekundę, że właśnie wykreśliłeś falę daubechies-4 , jak widać tutaj na czerwono.

wprowadź opis zdjęcia tutaj

Teraz wyobraź sobie, że bierzesz ten kształt fali na czerwono i po prostu wykonujesz korelację krzyżową ze swoim sygnałem. Spisujesz ten wynik. To będzie pierwszy rząd twojej działki. To jest skala-1. Następnie rozszerzasz falkę Daubechies-4 (to znaczy, po prostu sprawiasz, że „rozciąga się” ona w czasie, z jakiegoś powodu). Następnie ponownie wykonujesz korelację krzyżową tego nowego przebiegu z sygnałem. Następnie dostajesz drugi wiersz swojej działki. To jest skala-2. Cały czas robisz to dla wszystkich skal, co oznacza, że ​​nadal bierzesz pierwotną falkę „matki” i dalej się rozszerzasz, a następnie korelujesz krzyżowo, rozszerzasz i korelujesz krzyżowo itd. I po prostu wykreślasz wyniki jeden na górze inni

Właśnie to pokazuje wykres CWT. Wyniki przeprowadzania korelacji krzyżowej sygnału z falką w różnych skalach, to znaczy przy różnych czynnikach rozszerzenia (rozciągania).

Pozwól nam zinterpretować twój wizerunek. W pierwszym rzędzie widać, że masz słabe amplitudy w swojej korelacji krzyżowej. Oznacza to, że mówi ci, że prawie nic w twoim sygnale nie koreluje (ani nie „dopasowuje”) twojej falki, gdy jest ona w skali 1, (gdy jest w najmniejszej skali). Ciągle rozciągasz swoją falkę i korelujesz, a mimo to nic nie pasuje do twojego sygnału, dopóki nie osiągniesz powiedzmy skali 31. Kiedy więc rozciągniesz falkę 31 razy i wykonasz korelację krzyżową, zaczniesz widzieć jasne plamy, co oznacza, że ​​otrzymujesz dobre wyniki korelacji krzyżowej między rozciągniętą falą a sygnałem.

Jeśli jednak spojrzysz na samą górę, mamy najjaśniejsze punkty. Tak więc dla skali-46 wykonałeś ten rząd, rozciągając oryginalną falkę 46 razy, a następnie skorelowałeś go krzyżowo z sygnałem, i to jest twój rząd-46. Widzisz więc wiele fajnych jasnych punktów. Widać, że w pozycjach (oś x) ~ 25, ~ 190 i ~ 610 mam jasne plamki. To oznacza, że ​​masz w sygnale pewną cechę, która bardzo ściśle pasuje do twojej falki, która jest rozciągnięta 46 razy . Więc masz „coś” w tych miejscach, które ściśle pasują do twojej falki na taką skalę.

(Oczywiście w twoim przypadku użyłeś hałasu, więc pozycje, o których mówiłem, są losowe - to znaczy, że nie dzieje się nic naprawdę „interesującego”. Wykonaj CWT z impulsem sinusoidalnym i to, co mówię, może bądź dla ciebie bardziej zrozumiały).

Podsumowując, CWT pokazuje po prostu wszystkie możliwe wyniki korelacji między twoim szablonem / dopasowanym filtrem (w tym przypadku falką daub-4), w różnych pozycjach, (oś x), także przy różnych rozciągniętych czynnikach, (oś y) .

Mam nadzieję, że to pomogło.

Spacey
źródło
Dziękuję bardzo, to naprawdę pomogło, ale jak możesz powiedzieć, że dzięki temu procesowi poznałem częstotliwość i czas mojego sygnału?
Sufiyan Ghori
1
@Effekt Znalazłeś „czas” wystąpienia jakiejś cechy w swoim sygnale, przez który uzyskasz maksymalne wyniki korelacji. (Przykład, ~ 25, ~ 190, ~ 610) w twoim przykładzie. Aby uzyskać zawartość częstotliwości twojego sygnału w tym momencie, możesz po prostu spojrzeć na FFT tej części sygnału, LUB, możesz spojrzeć na FFT twojej falki w tej skali i spojrzeć na jego odpowiedź częstotliwościową.
Spacey,
Czy zatem powinniśmy przyjmować DCT po falce, aby mieć zarówno składniki czasu, jak i częstotliwości? Jeśli mam falę sinusoidalną (oś x = czas, oś y = amplituda), a jeśli wezmę jej FFT, to mam składowe częstotliwości z fft i składowe czasu z oryginalnego sygnału, to dlaczego mamy używać falki?
Sufiyan Ghori
1
@Effected Powodem korzystania z DFT / DCT jest uzyskanie globalnej częstotliwości. DFT / DCT informuje o zawartości częstotliwości dla całego sygnału. Gdzie jest jedna konkretna częstotliwość w czasie? Nie wiesz Jeśli jednak użyjesz falek, możesz dowiedzieć się nie tylko, jaka jest twoja częstotliwość (podobnie do DFT / DCT), ale także gdzie masz tę częstotliwość. (Lokalizacja w czasie).
Spacey,
Dla przypomnienia, częstotliwość istnieje tylko jako koncepcja globalna. Gdy tylko zaczniesz sprowadzać częstotliwość do określonego przedziału czasu, naprawdę mówisz o rozkładach częstotliwości. Rozkład zwęża się wraz ze wzrostem czasu lub skali. Obliczenie DFT falek o różnych skalach da ci pomysł, jak interpretować powiązane wyniki transformacji z powrotem do dziedziny częstotliwości; pomyśl filtr pasmowoprzepustowy. Fala Morleta ma ładnie Gaussowski rozkład częstotliwości, który dobrze nadaje się do odniesienia do koncepcji Fouriera. @endolith dotknął tego w swojej odpowiedzi.
user2718,
11

Te wykresy pomogły mi zrozumieć, pochodzące z tła STFT :

Kompleks Morlet (sinusoidalne) falkowej wygląda i zachowuje się jak jądra złożonego z STFT (ponieważ to pochodzi od Gabor przekształcać , rodzaj STFT). Kiedy „przesuwasz go” obok sygnału o tej samej częstotliwości, dopasowuje się on, bez względu na fazę mierzonego sygnału, wytwarzając pomiary wielkości i fazy w każdym punkcie (a to jest wykres samej wielkości):

Wielkość złożonej transformaty falkowej Morleta

Wykres wielkości złożonej transformaty falkowej Morleta

Wartościach rzeczywistych Morlet falkowej tylko mecze, gdy fazy falki i linia sygnału. Gdy przesuniesz go obok mierzonego sygnału, wchodzi on i wychodzi z fazy, wytwarzając maksima i minima, gdy anulują lub wzmacniają:

Wielkość ciągłej prawdziwej transformaty falkowej Morleta

Wielkość ciągłej prawdziwej transformaty falkowej Morleta

(Właściwie w takim przypadku wykreślamy wielkość, więc zarówno dodatnie, jak i ujemne dopasowania dają pomarańczowe kropki. Lepiej zamiast tego przejść na dwubiegunową mapę kolorów , aby pokazać, że niektóre szczyty są w fazie, a inne nie w fazie) :

Ciągła prawdziwa transformata falkowa Morleta za pomocą bipolarnej kolormapy

Ciągła prawdziwa transformata falkowa Morleta za pomocą bipolarnej kolormapy

W przypadku Morleta o wartościach rzeczywistych informacje o wielkości i fazie są łączone w jedną wartość wyjściową.

Najczęściej używane falki mają wartość rzeczywistą, więc pasują do siebie tylko wtedy, gdy mierzona fala i fala, którą testujesz w linii, prowadzą do tych oscylacji lub fal na skalogramie, gdy przesuwasz się jedna po drugiej.

endolit
źródło
Skąd masz te działki, btw?
Spacey
@Mohammad: Och, jeśli się linki mam więcej informacji na ich temat, ale w skrócie, zrobiłem im ten kod: phy.uct.ac.za/courses/python/examples/...
endolit
Link jest martwy, teraz są na github.com/emanuele/cwt lub gist.github.com/endolith/2783866
endolit
1
Bardzo dobrze! Postanowiłem dowiedzieć się o falach, poszukałem google i w ciągu pięciu minut wróciłem do ekosystemu wymiany stosów do dobrze napisanej „aha!” - klasowej odpowiedzi. To dobrze wybrany, minimalny zestaw obrazów. Dziękuję Ci!
uhoh,
4

To jest przykład, który moim zdaniem najlepiej zrozumieć fabułę Wavelet.

Spójrz na zdjęcie poniżej, kształt fali (A) jest naszym oryginalnym sygnałem, kształt fali (B) pokazuje falę Daubechies 20 (Db20) o długości około 1/8 sekundy, która zaczyna się na początku (t = 0) i skutecznie kończy się dobrze przed 1/4 sekundy. Wartości zerowe są przedłużane do pełnej 1 sekundy. Porównanie punkt po punkcie * z naszym sygnałem pulsacyjnym (A) będzie bardzo słabe i uzyskamy bardzo małą wartość korelacji.

najpierw przesuwamy lekko nierozciągniętą falę podstawową lub macierzystą nieco w prawo i wykonujemy kolejne porównanie sygnału z tym nowym przebiegiem, aby uzyskać kolejną wartość korelacji. Nadal się przesuwamy, a gdy falka Db20 znajduje się w pozycji pokazanej w (C), uzyskujemy nieco lepsze porównanie niż z (B), ale nadal bardzo słaba, ponieważ (C) i (A) mają różne częstotliwości.

Po dalszym przesuwaniu falki do końca 1-sekundowego przedziału czasowego, zaczynamy od początku z lekko rozciągniętą falką na początku i kilkakrotnie przesuwamy w prawo, aby uzyskać kolejny pełny zestaw tych wartości korelacji. Kształt fali (D) pokazuje falkę Db20 rozciągniętą do miejsca, w którym częstotliwość jest w przybliżeniu taka sama jak puls (A) i przesunięta w prawo, aż szczyty i doliny zrównają się dość dobrze. Przy tych konkretnych przesunięciach i rozciągnięciach powinniśmy uzyskać bardzo dobre porównanie i dużą wartość korelacji. Dalsze przesuwanie w prawo jednak nawet przy tym samym rozciąganiu spowoduje coraz słabsze korelacje. Dalsze rozciąganie wcale nie pomaga, ponieważ nawet po ustawieniu w linii puls i nadmiernie rozciągnięta falka nie będą miały tej samej częstotliwości.

wprowadź opis zdjęcia tutaj

W CWT mamy jedną wartość korelacji dla każdego przesunięcia każdego rozciągniętego falka. † Aby pokazać wartości korelacji (jakość „dopasowania”) dla wszystkich tych rozciągnięć i przesunięć, używamy wyświetlacza 3D.

Oto jest,

wprowadź opis zdjęcia tutaj

Jasne punkty wskazują, gdzie szczyty i doliny rozciągniętej i przesuniętej falki najlepiej pasują do pików i dolin wbudowanego impulsu (ciemne, gdy brak wyrównania, ściemniacz, w którym ustawiają się tylko niektóre szczyty i doliny, ale najjaśniejsze tam, gdzie wszystkie szczyty i doliny wyrównać). W tym prostym przykładzie rozciągnięcie falki 2 razy od 40 do 20 Hz (rozciągnięcie filtra z pierwotnych 20 punktów do 40 punktów) i przesunięcie go o 3/8 sekundy w czasie dało najlepszą korelację i zgadza się z tym, co wiedzieliśmy a priori lub „z góry” o impulsie (impuls wyśrodkowany na 3/8 sekundy, częstotliwość impulsu 20 Hz).

Wybraliśmy falkę Db20, ponieważ wygląda trochę jak sygnał tętna. Gdybyśmy nie z góry wiedzieli, jak wygląda to wydarzenie, moglibyśmy wypróbować kilka falek (łatwo przełączanych w oprogramowaniu), aby zobaczyć, który wyprodukował wyświetlacz CWT z najjaśniejszymi punktami (wskazując najlepszą korelację). To powiedziałoby nam coś o kształcie wydarzenia.

W powyższym prostym samouczku mogliśmy po prostu wizualnie rozpoznać lokalizację i częstotliwość impulsu (A). Następny przykład jest nieco bardziej reprezentatywny dla falek w prawdziwym świecie, w którym lokalizacja i częstotliwość nie są widoczne gołym okiem.

Zobacz poniższy przykład,

wprowadź opis zdjęcia tutaj

Wavelets można wykorzystać do analizy lokalnych wydarzeń. Konstruujemy powoli 300-punktowy sygnał fali sinusoidalnej i dodajemy małą „usterkę” lub nieciągłość (nachylenie) w czasie = 180. Nie zauważylibyśmy usterki, gdybyśmy nie spojrzeli na zbliżenie (b).

Zobaczmy teraz, jak FFT wyświetli tę usterkę, spójrz, wprowadź opis zdjęcia tutaj

Niska częstotliwość fali sinusoidalnej jest łatwa do zauważenia, ale niewielkiej usterki nie widać.

Ale jeśli użyjemy CWT zamiast FFT, to wyraźnie wyświetli tę usterkę, wprowadź opis zdjęcia tutaj

Jak widać, wyświetlanie falek CWT wyraźnie pokazuje pionową linię w czasie = 180 i w niskiej skali. (Falka ma bardzo małe rozciąganie w niskich skalach, co wskazuje, że usterka była bardzo krótka.) CWT również dobrze porównuje się z dużą oscylującą falą sinusoidalną, która ukrywa usterkę. W tych wyższych skalach falka została rozciągnięta (do niższej częstotliwości), a zatem „znajduje” szczyt i dolinę fali sinusoidalnej w czasie = 75 i 225, Do tej krótkiej nieciągłości zastosowaliśmy krótki 4-punktowy Db4 falka (jak pokazano) dla najlepszego porównania.

Sufiyan Ghori
źródło