The Fast Fourier Transform mengambil operasi, sedangkan Cepat Wavelet Transform mengambil O ( N ) . Tapi apa, khususnya, yang dihitung FWT?
Meskipun mereka sering dibandingkan, sepertinya FFT dan FWT adalah apel dan jeruk. Seperti yang saya pahami, akan lebih tepat untuk membandingkan STFT (FFT potongan kecil dari waktu ke waktu) dengan Morlet WT kompleks , karena keduanya merupakan representasi frekuensi-waktu berdasarkan pada sinusoid kompleks (tolong perbaiki saya jika saya salah ). Ini sering ditunjukkan dengan diagram seperti ini:
( Contoh lain )
Kiri menunjukkan bagaimana STFT adalah sekelompok FFT ditumpuk di atas satu sama lain seiring berjalannya waktu (representasi ini adalah asal dari spektrogram ), sementara kanan menunjukkan WT diad, yang memiliki resolusi waktu lebih baik pada frekuensi tinggi dan frekuensi lebih baik resolusi pada frekuensi rendah (representasi ini disebut skalogram ). Dalam contoh ini, untuk STFT adalah jumlah kolom vertikal (6), dan satu O ( N log N ) operasi FFT menghitung satu baris N koefisien dari N sampel. Totalnya adalah 8 FFT masing-masing 6 poin, atau 48 sampel dalam domain waktu.
Yang tidak saya mengerti:
Berapa banyak koefisien yang dihitung oleh satu operasi FWT, dan di mana mereka berada pada grafik frekuensi-waktu di atas?
Kotak mana yang bisa diisi dengan satu perhitungan?
Jika kita menghitung blok koefisien frekuensi waktu dengan area yang sama menggunakan keduanya, apakah kita mendapatkan jumlah data yang sama?
Apakah FWT masih lebih efisien daripada FFT?
Contoh konkret menggunakan 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. ]))
Ini menciptakan dua set 4 koefisien, jadi sama dengan jumlah sampel dalam sinyal asli. Tapi apa hubungan antara 8 koefisien ini dan ubin di diagram?
Memperbarui:
Sebenarnya, saya mungkin melakukan kesalahan ini, dan seharusnya menggunakan wavedec()
, yang melakukan dekomposisi DWT multi-level:
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. ])]
Jawaban:
Anda benar bahwa FWT lebih baik dianggap sebagai "sepupu" dari STFT, daripada FT. Faktanya, FWT hanyalah sampel diskrit dari CWT (transformasi wavelet kontinu), karena FFT / DFT adalah sampel diskrit dari transformasi Fourier. Ini mungkin tampak seperti titik halus, tetapi relevan ketika memilih bagaimana Anda mendiskreditkan transformasi.
CWT dan STFT keduanya merupakan analisis yang berlebihan dari suatu sinyal. Dengan kata lain, Anda memiliki lebih banyak "koefisien" (dalam kasus diskrit) daripada yang Anda perlukan untuk sepenuhnya mewakili sinyal. Namun, transformasi Fourier (atau katakanlah transformasi wavelet hanya menggunakan satu skala) mengintegrasikan sinyal dari-infinity ke + infinity. Ini tidak terlalu berguna pada sinyal dunia nyata, jadi kami memotong (yaitu jendela) transformasi ke panjang yang lebih pendek. Windowing sinyal mengubah transformasi - Anda dikalikan dengan jendela dalam waktu / ruang, sehingga dalam ruang transformasi Anda memiliki konvolusi transformasi jendela dengan transformasi sinyal.
Dalam kasus STFT, jendela (biasanya) memiliki panjang yang sama (tidak nol) sepanjang waktu, dan merupakan frekuensi agnostik (Anda memberi sinyal 10 Hz lebar sama dengan sinyal 10 kHz). Jadi Anda mendapatkan spektogram kotak persegi panjang seperti yang telah Anda gambar.
CWT memiliki windowing ini dibangun oleh fakta bahwa wavelet menjadi lebih pendek (dalam waktu atau ruang) ketika skalanya menurun (seperti frekuensi yang lebih tinggi). Jadi untuk frekuensi yang lebih tinggi, durasinya efektif lebih pendek durasinya, dan Anda berakhir dengan scaleogram yang terlihat seperti apa yang telah Anda gambar untuk FWT.
Bagaimana Anda mendiskritisasi CWT agak terserah Anda, meskipun saya pikir ada sampel minimum baik dalam pergeseran dan skala untuk sepenuhnya mewakili sinyal. Biasanya (setidaknya cara saya menggunakannya), untuk skala terendah (frekuensi tertinggi), Anda akan mencicipi di semua lokasi shift (waktu / ruang). Saat Anda mendapatkan skala yang lebih tinggi (frekuensi lebih rendah), Anda dapat mencicipi lebih jarang. Alasannya adalah bahwa frekuensi rendah tidak berubah dengan cepat (pikirkan crash cymbal vs gitar bass - crash cymbal memiliki transien yang sangat singkat, sedangkan gitar bass akan membutuhkan waktu lebih lama untuk berubah). Faktanya, pada skala terpendek (dengan asumsi Anda sampel di semua lokasi shift), Anda memiliki representasi penuh dari sinyal (Anda dapat merekonstruksinya hanya menggunakan koefisien pada skala ini). Saya tidak begitu yakin tentang alasan pengambilan sampel skala. SAYA' Saya telah melihat ini disarankan sebagai logaritmik, dengan (saya pikir) jarak yang lebih dekat antara skala yang lebih pendek. Saya pikir ini karena wavelet pada skala yang lebih panjang memiliki transformasi Fourier yang lebih luas (oleh karena itu mereka "mengambil" lebih banyak frekuensi).
Saya akui saya tidak sepenuhnya memahami FWT. Firasat saya adalah bahwa itu sebenarnya sampling minimum dalam shift / skala, dan bukan representasi yang berlebihan. Tapi kemudian saya pikir Anda kehilangan kemampuan untuk menganalisis (dan mengacaukan) sinyal dalam waktu singkat tanpa memperkenalkan artefak yang tidak diinginkan. Saya akan membaca lebih banyak tentang itu dan, jika saya belajar sesuatu yang bermanfaat, laporkan kembali. Semoga yang lain suka berkomentar.
sumber
Pertimbangkan kasus wavelet Haar. Fast Wavelet Transform secara rekursif membagi sinyal Anda dan menghitung jumlah dan perbedaan dari dua bagian setiap kali. Perbedaannya adalah besarnya transformasi untuk wavelet saat ini dan jumlah dikembalikan untuk pemanggil untuk menghitung besarnya transformasi untuk wavelet yang dilebarkan dengan setengah frekuensi. Dengan demikian, FWT mencakup bidang frekuensi waktu menggunakan pola yang dijelaskan dalam diagram yang Anda berikan.
Perhatikan bahwa diagram yang Anda berikan agak menyesatkan. Apa yang sebenarnya ingin mereka sampaikan kepada Anda adalah bahwa Anda mendapatkan satu sampel pada frekuensi terendah, dua sampel pada frekuensi dua kali lipat, empat sampel pada empat kali lipat frekuensi itu dan seterusnya. Properti frekuensi-waktu dari masing-masing wavelet tidak sedemikian rupa sehingga menutupi ubin mereka. Dalam praktiknya, setiap wavelet akan mencakup area yang tak terbatas karena mereka memiliki dukungan yang kompak dan, oleh karena itu, harus sepenuhnya didelokalisasi dalam hal frekuensi. Jadi Anda harus memikirkan pusat-pusat ubin itu.
Selain itu, FWT membutuhkan wavelet diskrit yang harus mematuhi kriteria penerimaan jauh lebih ketat daripada wavelet terus menerus untuk CWT. Akibatnya, sifat frekuensi waktu dari wavelet diskrit umumnya mengerikan (misalnya wavelet Daubechies penuh dengan fitur tajam atau memiliki frekuensi yang berubah) dan utilitas pesawat frekuensi-waktu sangat berkurang dalam konteks FWT. Namun, wavelet kontinu digunakan untuk menghitung representasi frekuensi waktu dari sinyal.
sumber
Referensi Anda memilikinya:
Untuk lebih lanjut, Anda mungkin menyukai halaman DWT . Di sana ia memperkenalkan wavelet Haar, wavelet Daubechies dan lainnya. Ini menunjukkan caranya
Jika, alih-alih wavelet diskrit, Anda ingin sekarang tentang wavelet kontinu atau wavelet kompleks, Anda mungkin mulai dengan seri wavelet .
Di luar wikipedia, sebuah buku teks dan kursus mungkin bisa membantu Anda.
sumber
Mulai dari STFT berjendela umum (formulir berkelanjutan). Jika Anda mencolokkan jendela unit ketinggian tak terbatas, Anda memulihkan transformasi Fourier sebagai kasing khusus. Yang bisa Anda diskritkan (dan dapatkan DFT) dan buat cepat (dan dapatkan FFT).
Mulai dari CWT (formulir berkelanjutan). CWT kontinu mengakui jumlah luar biasa dari bentuk wavelet potensial. Mereka dapat didiskritisasi persis hanya dengan pola pengambilan sampel (dalam waktu atau skala) yang menghormati beberapa ketimpangan "Heisenberg": satu sampel per unit permukaan. Pola-pola ini tergantung pada wavelet. Pada sebagian besar kasus, polanya membuat CWT diskrit yang berlebihan, dan menghasilkan bingkai wavelet.
Beberapa menginginkannya tidak berlebihan, dengan skala diad (DWT). Hanya sangat sedikit wavelet (masih dalam jumlah tak terbatas, tetapi Anda tidak dapat menemukannya secara kebetulan) mengizinkannya. Di antara yang pertama adalah Haar, Franklin dan Meyer wavelet. Jika Anda kemudian memaksakan dukungan wavelet menjadi terbatas, maka Haar adalah satu-satunya untuk waktu yang lama. Hampir tidak mungkin untuk mendapatkan wavelet ortogonal dari "wavelet kontinu alami", itulah mengapa Daubechies 'dibangun, dan kemudian Symmlets dan Coiflets . Wavelet berbentuk aneh itu tidak memiliki formula yang bagus dan sederhana seperti wavelet Morlet.
DWT (atau FWT) tepat, seperti DFT / FFT. Kebanyakan CWT diskret lainnya (dengan wavelet apa saja) kira-kira begitu (tanpa banyak bahaya jika Anda memiliki redundansi yang cukup).
Begitu:
Gambar-gambar berikut mengungkapkan bagaimana versi wavelet Haar yang berkelanjutan
dapat disampel menjadi wavelet diskrit orthogonal:
Perhatikan bahwa beberapa wavelet diskrit, terutama yang panjang (seperti splines), kadang-kadang dihitung menggunakan FFT :)
sumber