Wavelet hangi zaman-frekans katsayılarını hesaplar?


26

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?O(N-günlükN-)O(N-)

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:

FFT ve WT katsayılarının zaman-frekans düzlemine nasıl karşılık geldiğini gösteren ızgaralar

( 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 NN-O(N-günlükN-)N-N-

Neyi anlamadım?

  • Tek bir FWT işlemi kaç katsayı hesaplar ve yukarıdaki zaman-frekans çizelgesinde nerede bulunurlar? O(N-)

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

2
Bu dalgacıkların ayrışmasının nasıl çalıştığını daha iyi anlayabilmek için, yararlı bir araç, gerçek hayattaki sinyaller üzerinde bunu yapabilmek olacaktır: örneğin ses sinyali (burada bu yönde bir sorum var dsp.stackexchange.com/ sorular / 12694 / stft-and-dwt-
wavelets

@endolith Sorunuz hala isteniyor mu? Öyleyse başka ipuçları da ekleyebilirim
Laurent Duval

@LaurentDuval Evet, hala açık ve hala anlamıyorum. Kafam karışık olabilir çünkü CWT Morlet ve DWT gibi şeyler kullanır, sadece Haar veya Daubechies gibi şeyler kullanır. Hızlı FWT'nin sadece Haar olup olmadığından veya başka tür dalgacıklardan da kullanılabileceğinden emin değilim .
Endolit

2
@ndolith Sadece bunun için bir yorum: sürekli CWT inanılmaz miktarda potansiyel dalgacık şekli kabul ediyor. Tam olarak sadece bazı "Heisenberg" eşitsizliğine saygı duyan örnekleme modelleriyle (zaman veya ölçek olarak) ayrılabilir. Bu modeller dalgacıklara bağlıdır. Çoğu durumda, desenler gereksiz olan bir isteğe bağlı CWT yapar. Bazıları bunun gereksiz kalmasını, ikili bir ölçekle istiyor. Sadece çok az dalgacık buna izin veriyor. Daha sonra dalgacık desteğini sonlu olarak empoze ederseniz, Haar bir tane, neredeyse "doğal dalgacıkları" elde etmek imkansız, bu nedenle Daubechies'in yapıları bu yüzden inşa edildi
Laurent Duval

Yanıtlar:


13

FWT’nin, FT’den ziyade STFT’nin “kuzeni” olduğu düşüncesindesiniz. Aslında, FWT, CWT'nin ayrı bir örneklemesidir (sürekli dalgacık dönüşümü), çünkü FFT / DFT, Fourier dönüşümünün ayrı bir örneklemesidir. Bu ince bir nokta gibi görünebilir, ancak dönüşümü nasıl ayrıştıracağınızı seçerken önemlidir.

CWT ve STFT, bir sinyalin yedekli analizleridir. Başka bir deyişle, bir sinyali tam olarak göstermeniz gerekenden daha fazla "katsayıya" sahipsiniz (ayrık durumda). Bununla birlikte, bir Fourier dönüşümü (veya sadece bir ölçek kullanarak bir dalgacık dönüşümü demek) -Enfitten + sonsuzluğa kadar bir sinyali bütünleştirir. Bu, gerçek dünya sinyalleri için çok kullanışlı değildir, bu yüzden dönüşümleri daha kısa uzunluklara keseriz (yani pencere). Bir sinyalin pencerelenmesi dönüşümü değiştirir - zamanla / boşluktaki pencereyle çoğaltırsınız, böylece dönüşüm alanında pencerenin dönüşümü ile sinyalin dönüşümü gerçekleşir.

STFT durumunda, pencereler (genellikle) her zaman aynı uzunluktadır (sıfır olmayan ölçüdedir) ve frekans agnostiğidir (siz bir 10 Hz sinyalini 10 kHz sinyali ile aynı genişlikte görüntülersiniz). Böylece çizdiğiniz gibi dikdörtgen ızgara spektrogramı elde edersiniz.

CWT bu pencereye, ölçek azaldıkça (daha yüksek frekans gibi) dalgacıkların kısalması (zaman veya uzayda) gerçeği ile inşa edilmiştir. Bu nedenle, daha yüksek frekanslar için, etkili pencerenin süresi kısalır ve FWT için çizdiğiniz şeye benzeyen bir scaleogram ile bitirdiniz.

CWT'yi nasıl takdir edeceğiniz biraz size bağlıdır, ancak hem sinyali hem de ölçeğinde bir sinyali tam olarak temsil etmek için minimum örneklemeler olduğunu düşünüyorum. Genellikle (en azından onları nasıl kullandım), en düşük ölçek (en yüksek frekans) için, tüm vardiya konumlarında (zaman / boşluk) örnekleme yaparsınız. Ölçek arttıkça (frekans düşüklüğü), daha az sıklıkta numune alabilirsiniz. Bunun nedeni, düşük frekansların hızla değişmediğidir (bir zil gürültüsüne karşı bir bas gitarı düşünün - zil gürültüsünün çok kısa geçici süreleri vardır, oysa bas gitarın değişmesi daha uzun sürer). Aslında, en kısa ölçekte (tüm vardiya konumlarında örneklemeniz varsayalım), bir sinyalin tam gösterimini elde edersiniz (yalnızca bu ölçekte katsayıları kullanarak yeniden oluşturabilirsiniz). Ölçek örneklemenin gerekçesi hakkında pek emin değilim. BEN' Bunu önerilenlerin logaritmik olarak gördüklerini, sanırım kısa ölçekler arasında daha yakın bir boşluk bıraktıklarını düşünüyorum. Bunun sebebi, daha uzun ölçeklerdeki dalgacıkların daha geniş bir Fourier dönüşümüne sahip olmalarıdır (bu nedenle daha fazla frekansı "toplarlar").

FWT'yi tam olarak anlamadığımı itiraf ediyorum. Benim önsezim, aslında vardiya / skaladaki minimum örneklemedir ve yedekli bir temsil değildir. Fakat daha sonra, istenmeyen eserler ortaya koymadan kısa sürede bir sinyali analiz etme (ve çözme) yeteneğini kaybettiğinizi düşünüyorum. Bununla ilgili daha fazla bilgi okuyacağım ve eğer yararlı bir şey öğrenirsem rapor edeceğim. Umarım diğerleri yorum yapmaktan hoşlanır.


1
“aslında vardiya / ölçekte minimum örneklemedir ve gereksiz bir temsil değildir.” Ah! Bence haklısın ve bu neden her zaman FFT ile karşılaştırıldığını açıklar, ki bu da asgari bir temsildir.
Endolith

3
FWT, CWT için kritik bir örneklemedir. Hala daha iyi anlamaya çalışıyorum, ancak STFT ve CWT'nin her ikisinin de Kareler olduğunu öğrendim. Çerçeve teorisi benden öteye gidiyor, ancak ilginç bir kavram belirsizlik formülü, STFT için dw * dt> C (dw frekans çözünürlüğü ve dt zaman çözünürlüğüdür). Başka bir deyişle, frekansı daha iyi çözmeyi denediğinizde, zaman çözünürlüğünü kaybedersiniz. CWT'nin bu sınırlaması yoktur. Kafamda netleştikten sonra okumaya devam edeceğim ve yukarıdaki cevabımı netleştireceğim.

1
Anladığım kadarıyla, CWT aynı sınırlamaya sahip, ancak daha iyi bir takas kullanır.
Endolit

1
"STFT, bir sinyalin gereksiz analizleridir". Bunun doğru olduğunu sanmıyorum. 100 puanlık bir sinyalin varsa, onu 10 puanlık parçalara bölün, ardından her birine 10 puanlık bir FFT yapın, yine de aynı miktarda örnekte saklanan aynı bilgilere sahipsiniz.
endolith

11

Haar dalgacık kasasını düşünün. Hızlı Dalgacık Dönüşümü, sinyalinizi tekrar tekrar alt bölümlere ayırır ve her iki yarıya ait toplamı ve farkı hesaplar. Fark, mevcut dalgacık için dönüşümün büyüklüğüdür ve toplamın, frekansın yarısı olan bir dilate dalgacık için dönüşümün büyüklüğünü hesaplaması için toplayıcı için geri getirilmiştir. Bu nedenle FWT, verdiğiniz diyagramda açıklanan deseni kullanarak zaman-frekans düzlemini kaplar.

Verdiğiniz diyagramın biraz yanıltıcı olduğuna dikkat edin. Gerçekten anlatmaya çalıştıkları şey, en düşük frekansta bir örnek, iki frekansta iki örnek, dört frekansta dört örnek ve bu sıklığı elde etmektir. Her dalganın zaman-frekans özellikleri, kiremitlerini örtecek şekilde değildir . Uygulamada, her dalgacık sonsuz bir alanı kapsayacaktır, çünkü bunlar kompakt bir desteğe sahiptir ve bu nedenle, frekans açısından tamamen yerinden edilmesi gerekir. Öyleyse sadece bu karoların merkezlerini düşünmelisin.

Ayrıca, FWT, CWT için sürekli dalgacıklardan çok daha kısıtlayıcı bir kabul edilebilirlik kriterine uyması gereken ayrı bir dalgacık gerektirir. Sonuç olarak, ayrık dalgacıkların zaman-frekans özellikleri genel olarak berbattır (örneğin, Daubechies dalgacıkları keskin özelliklerle doludur veya değişen frekansa sahiptir) ve zaman-frekans düzleminin faydası, FWT bağlamında büyük ölçüde azaltılmaktadır. Bununla birlikte, sinyallerin zaman-frekans gösterimlerini hesaplamak için sürekli dalgacıklar kullanılır.


Evet, katsayıların lokalizasyonunu anlıyorum. Bu FFT ile aynı. "Yapılmalı" derken ne demek istiyorsun? Sinyalin minimal / yedek olmayan bir gösterimini almaya çalışıyorsanız bu yalnızca bir gereklilik midir? Ya sadece analiz etmeye / görselleştirmeye çalışıyorsanız? Soruya daha somut bir örnek ekleyeceğim.
endolith

1
Kabul edilebilirlik kriterine uyulması, kimliğin bir çözümünün mevcut olmasını sağlar, yani tüm sinyallerin dalgacık dönüşümlerinden geri kazanılmasını sağlar. Eğer buna uymazsanız, dönüşümden bir sinyali kurtaramazsanız, hangi noktada analiz ettiğinizin tam olarak ne olduğunu sorgulamanız gerekir (hatta sinyal içindeki herhangi bir bilgiyi yansıtıyor mu ?!). Minimal / yedek olmayan bir temsil gerektirmiyorsa, CWT'den (daha "ideal" dalgacıkları tanımlamanıza izin veren) daha gevşek kabul edilebilirlik kriterini kullanabilirsiniz.

1
Doktora tezimi gerçekten yararlı bulacağını düşünüyorum. Sizin için çevrimiçi hale getireceğim ...

Çevrimiçi yaptın mı? :)
endolith


3

Referansınızda şöyle var:

Küçük sonlu dalgaların veya dalgacıkların ortogonal temeline dayanan bir dizi katsayı

Daha fazla bilgi için DWT sayfasını beğenebilirsiniz . Orada Haar dalgacıklarını, Daubechies dalgacıklarını ve diğerlerini tanıtıyor. Nasıl olduğunu gösteriyor

  • Dalgacıkların yeri vardır - (1,1, –1, –1) dalgacıkları “sağ taraf” karşısında “sol tarafa” karşılık gelirken, son iki dalgacık sol veya sağ tarafta bir desteğe sahiptir diğerinin.
  • Sinüzoidal dalgaların yeri yoktur - tüm alana yayılırlar - ancak fazları vardır - ikinci ve üçüncü dalgalar birbirinden bağımsızdır, bunlar kosinüs ve sinüs gibi faz dışı 90 ° 'ye tekabül ederler. .

Ayrık dalgacıklar yerine, şimdi sürekli dalgacıklar veya karmaşık dalgacıklar hakkında konuşmak istiyorsanız dalgacık serileriyle başlayabilirsiniz .

Wikipedia ötesinde, bir ders kitabı ve bir kurs iyi yapabilir.


Bu cevabı anlamıyorum. Sorularıma cevap veriyor mu? Neyin sol ve sağ tarafı? Bunun zaman frekansı gösterimi ile ne ilgisi var?
Endolith

"Sol tarafa karşı sağ taraf" tanımı, bu sayfanın sinüzoidal baz ve Haar dalgacık tabanının nispi özelliklerini açıklamak için basit bir örnek içerdiğini gösteren DWT sayfasının alıntı bir önizlemesidir. Dalgacık dönüşümündeki katsayıların doğasını soruyordun. Sezgi arıyor gibiydin. Bu örneği (orijinal bağlamında) faydalı bulabileceğinizi düşündüm.

Evet, bu soruyu göndermeden önce Wikipedia makalelerini defalarca okudum. Cevabınızın zaman-frekans temsili hakkındaki sorumla ne yapıp / yapmadığını bilmiyorum. Varsa, noktaları birleştirebilir misiniz? N numunelerinden oluşan bir FFT, STFT spektrogramının tek bir sütununu oluşturan n katsayıları üretecektir. WT tarafından üretilen katsayılar ile scalogram arasında uygun bir ilişki var mı? Eğer öyleyse, bu nedir? Sağ alt şemada yer alan kutulardan hangisi FWT üzerinden bir defa basılarak doldurulur?
Endolith

1
Wikipedia sayfalarındaki dalgacıklarla ilgili hemen hemen her şey şu anda yanlıştır.

3

O(N-2)

O(N-)O(N-günlük(N-))O()

Genel pencereli STFT'den (sürekli form) başlayın . Sonsuz bir birim yüksekliği penceresine takarsanız, Fourier dönüşümünü özel bir durum olarak kurtarırsınız. Hangi isteğe bağlı (ve DFT olsun) ve hızlı hale getirin (ve FFT olsun).

Bir CWT'den başlayın (sürekli form). Sürekli CWT inanılmaz miktarda potansiyel dalgacık şekli kabul eder. Tam olarak sadece bazı "Heisenberg" eşitsizliğine saygı duyan örnekleme modelleriyle (zaman veya ölçek olarak) ayrılabilir: birim yüzey başına bir örnek. Bu modeller dalgacıklara bağlıdır. Çoğu durumda, desenler yedekli olan bir ayrıklaştırılmış CWT yapar ve bir dalgacık çerçevesi oluşturur.

Bazıları bunun gereksiz kalmasını istedi, bunun dyadic bir ölçekle (DWT). Sadece çok az dalgacık (hala sonsuz sayıda, fakat onları tesadüfen bulamıyorsunuz) buna izin veriyor. Bunlardan ilki, Haar, Franklin ve Meyer dalgacıklarıydı. Eğer dalgacık desteğini sonlu olarak empoze ederseniz, Haar uzun bir süre boyunca tek olan oydu. "Doğal sürekli dalgacıklardan" ortogonal bir dalgacık elde etmek neredeyse imkansız, bu nedenle Daubechies'in yarattıkları ve daha sonra Symmlet'ler ve Coiflet'ler . Bu garip şekilli dalgacıkların Morlet dalgacık gibi hoş ve basit formülleri yoktur.

O(N-)

Aslında, FWT sadece CWT'nin ayrık bir örneklemesidir.

DWT (veya FWT), DFT / FFT gibi aynıdır. Diğer ayrıklaştırılmış CWT'lerin çoğu (herhangi bir dalgacık ile) yaklaşık olarak böyledir (yeterli fazlalığa sahipseniz çok fazla zarar vermeden).

Yani:

  • kkk804T2x424[ω/2,ω]42x22[ω/8,ω/4][1,1,2,4]
  • k
  • +xO(N-)

Aşağıdaki resimler Haar dalgacıklarının sürekli bir versiyonunun nasıl olduğunu gösteriyor sürekli Haar dalgacık

dikgen, kesikli bir dalgacıkta örneklenebilir: ayrık kritik Haar dalgacık

Bazı ayrık dalgacıkların, özellikle uzun olanların (spline gibi) bazen bir FFT kullanılarak hesaplandığına dikkat edin :)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.