Fourier Dönüşümü hızlı alır işlemleri sırasında Dalgacık Dönüşümü hızlı alır . Fakat FWT özellikle ne hesaplar?
Sık sık karşılaştırılsalar da, FFT ve FWT elma ve portakal gibidir. Anladığım kadarıyla, STFT'yi (zamanla küçük parçaların FFT'leri) karmaşık Morlet WT ile karşılaştırmak daha uygun olacaktır , çünkü ikisi de karmaşık sinüzoidlere dayanan zaman-frekans gösterimleridir (lütfen hatalıysam düzeltin ). Bu genellikle şöyle bir şema ile gösterilir:
( Başka bir örnek )
Solda, STFT'nin zaman geçtikçe birbirinin üstüne istiflenmiş bir grup FFT olduğunu (bu gösterim, spektrogramın kaynağıdır ) gösterirken, sağ, yüksek frekanslarda daha iyi zaman çözünürlüğüne ve daha iyi frekansa sahip olan dyadik WT'yi gösterir. düşük frekanslarda çözünürlük (bu gösterime scalogram denir ). Bu örnekte, STFT için , dikey sütunların sayısıdır (6) ve tek bir FFT işlemi , numunelerinden tek bir katsayıları satırı hesaplar . Toplam 8 FFT, her biri 6 puan veya zaman alanında 48 örnektir.O ( N log N ) N N
Neyi anlamadım?
Tek bir FWT işlemi kaç katsayı hesaplar ve yukarıdaki zaman-frekans çizelgesinde nerede bulunurlar?
Hangi dikdörtgenler tek bir hesaplama ile doldurulur?
Her ikisini kullanarak eşit alanlı bir zaman-frekans katsayıları bloğunu hesaplarsak, aynı miktarda veri alıyor muyuz?
FWT hala FFT'den daha mı verimli?
PyWavelets kullanarak somut örnek :
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. ]))
İki set 4 katsayı yaratır, bu yüzden orijinal sinyaldeki örnek sayısı ile aynıdır. Fakat bu 8 katsayı ile şemadaki karolar arasındaki ilişki nedir?
Güncelleştirme:
Aslında, muhtemelen bu hatayı yapıyordum ve wavedec()
çok seviyeli bir DWT ayrıştırması yapan kullanıyor olmalıyım :
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. ])]