Fast Fourier Transform wykonuje operacji, podczas gdy szybko WAVELET Transform wykonuje . Ale co konkretnie oblicza FWT?
Chociaż często się je porównuje, wydaje się, że FFT i FWT to jabłka i pomarańcze. Jak rozumiem, bardziej odpowiednie byłoby porównanie STFT (FFT małych kawałków w czasie) ze złożonym Morletem WT , ponieważ oba są reprezentacjami czasowo-częstotliwościowymi opartymi na złożonych sinusoidach (proszę mnie poprawić, jeśli się mylę ). Jest to często pokazane za pomocą takiego schematu:
( Inny przykład )
Po lewej pokazuje, jak STFT jest wiązką FFT ułożonych jedna na drugiej w miarę upływu czasu (ta reprezentacja jest początkiem spektrogramu ), podczas gdy po prawej pokazuje dyadyczny WT, który ma lepszą rozdzielczość czasową przy wysokich częstotliwościach i lepszą częstotliwość. rozdzielczość przy niskich częstotliwościach (ta reprezentacja nazywa się skalogramem ). W tym przykładzie dla STFT jest liczbą pionowych kolumn (6), a pojedyncza operacja \ matematyczna FFT oblicza pojedynczy rząd współczynników z próbek. Łącznie jest to 8 FFT po 6 punktów każda lub 48 próbek w dziedzinie czasu.N
Czego nie rozumiem:
Ile współczynników oblicza pojedyncza matematyczna operacja FWT i gdzie się one znajdują na powyższym wykresie czasowo-częstotliwościowym?
Które prostokąty wypełnia jedno obliczenie?
Jeśli obliczymy blok współczynników czasowo-częstotliwościowych o równej powierzchni przy użyciu obu, czy otrzymamy taką samą ilość danych?
Czy FWT jest nadal bardziej wydajny niż FFT?
Konkretny przykład z wykorzystaniem PyWavelets :
In [2]: dwt([1, 0, 0, 0, 0, 0, 0, 0], 'haar')
Out[2]:
(array([ 0.70710678, 0. , 0. , 0. ]),
array([ 0.70710678, 0. , 0. , 0. ]))
Tworzy dwa zestawy 4 współczynników, więc jest taki sam jak liczba próbek w oryginalnym sygnale. Ale jaki jest związek między tymi 8 współczynnikami a kafelkami na schemacie?
Aktualizacja:
Właściwie prawdopodobnie robiłem to źle i powinienem używać wavedec()
, który dokonuje wielopoziomowego rozkładu DWT:
In [4]: wavedec([1, 0, 0, 0, 0, 0, 0, 0], 'haar')
Out[4]:
[array([ 0.35355339]),
array([ 0.35355339]),
array([ 0.5, 0. ]),
array([ 0.70710678, 0. , 0. , 0. ])]