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