Membaca plot transformasi Wavelet

15

Saya mengalami kesulitan memahami cara membaca plot yang diplot oleh transformasi wavelet,

di sini adalah kode Matlab sederhana saya,

load noissin;
% c is a 48-by-1000 matrix, each row 
% of which corresponds to a single scale.
c = cwt(noissin,1:48,'db4','plot');

masukkan deskripsi gambar di sini

Jadi bagian yang paling cemerlang adalah ukuran ukuran kopi yang lebih besar, tapi bagaimana tepatnya saya bisa memahami plot ini apa yang terjadi di sana? Mohon bantu saya.

Sufiyan Ghori
sumber
saya mencoba kode berikut dalam matlab t = 0: 0.001: 2; y = sin (2 * pi * 20 * t) wname = 'cmor0.5-1' skala = 1: 0,1: 80; cwt (y, scale, wname, 'plot'); Saya mendapat plot berikut! masukkan deskripsi gambar di sini bagian nyata dan imajiner yang menunjukkan celah yang diamati dalam CWT dengan morl wavelet. Jadi dengan cara CWT dengan wavelet morlet kompleks juga mengandung informasi fase. Bagaimana menjelaskannya ??

Jawaban:

15

Bayangkan selama satu detik, bahwa Anda baru saja merencanakan wavelet daubechies-4 Anda , seperti yang Anda lihat di sini dengan warna merah.

masukkan deskripsi gambar di sini

Sekarang bayangkan Anda mengambil bentuk gelombang ini dalam warna merah, dan cukup melakukan korelasi silang dengan sinyal Anda. Anda memplot hasil itu. Ini akan menjadi baris pertama plot Anda. Ini skala-1. Selanjutnya, Anda melebarkan wavelet Daubechies-4 Anda, (yaitu, Anda membuatnya 'meregangkannya' tepat waktu, dengan beberapa faktor). Kemudian, Anda kembali melakukan korelasi silang bentuk gelombang baru ini dengan sinyal Anda. Anda kemudian mendapatkan baris kedua plot Anda. Ini skala-2. Anda terus melakukan ini untuk semua skala, yang berarti Anda terus mengambil wavelet 'ibu' asli Anda, dan Anda terus melebar, kemudian berkorelasi silang, melebarkan, dan berkorelasi silang, dll, dan Anda hanya memplot hasilnya satu di atas lainnya.

Inilah yang ditunjukkan plot CWT kepada Anda. Hasil melakukan korelasi silang sinyal Anda dengan wavelet pada skala yang berbeda, yaitu pada berbagai faktor pelebaran (peregangan).

Jadi mari kita tafsirkan gambar Anda. Di baris pertama, Anda dapat melihat bahwa Anda memiliki amplitudo yang lemah dalam korelasi silang Anda. Itu berarti bahwa ia memberi tahu Anda, hampir tidak ada dalam sinyal Anda yang berkorelasi, (atau 'cocok') dengan wavelet Anda, ketika itu pada skala-1, (ketika itu pada skala terkecil). Anda terus meregangkan wavelet dan berkorelasi, dan tetap saja tidak cocok dengan apa pun dalam sinyal Anda, sampai Anda mencapai katakan, skala-31. Jadi ketika Anda meregangkan wavelet 31 kali, dan melakukan korelasi silang, Anda mulai melihat beberapa titik terang, yang berarti Anda mendapatkan skor korelasi silang yang baik antara wavelet yang diregangkan, dan sinyal Anda.

Namun jika Anda melihat di bagian paling atas, kami memiliki tempat paling terang. Jadi untuk skala-46, Anda membuat baris itu dengan meregangkan wavelet asli Anda 46 kali, dan kemudian berkorelasi silang dengan sinyal Anda, dan kemudian itu adalah baris-46 Anda. Jadi Anda melihat banyak titik terang yang bagus. Anda dapat melihat bahwa pada posisi (sumbu x) ~ 25, ~ 190, dan ~ 610, saya memiliki titik terang. Jadi itu memberi tahu Anda, Anda memiliki beberapa fitur dalam sinyal Anda, yang sangat cocok dengan wavelet Anda yang membentang 46 kali . Jadi Anda memiliki 'sesuatu' di lokasi-lokasi yang cocok dengan wavelet Anda pada skala ini.

(Tentu saja, dalam kasus Anda, Anda telah menggunakan noise, sehingga posisi yang saya bicarakan acak - yaitu, tidak ada yang benar-benar 'menarik' terjadi. Lakukan CWT dengan pulsa sinus dan apa yang saya katakan dapat diperjelas bagi Anda.)

Singkatnya, CWT hanya menunjukkan kepada Anda semua skor korelasi yang mungkin antara template / filter yang cocok (dalam hal ini waubet daub-4), pada posisi yang berbeda, (sumbu x), juga pada faktor peregangan yang berbeda, (sumbu y) .

Semoga ini bisa membantu.

Spacey
sumber
Terima kasih banyak, ini sangat membantu, tetapi bagaimana Anda bisa mengatakan bahwa saya telah mengetahui frekuensi dan waktu sinyal saya dengan proses ini?
Sufiyan Ghori
1
@Effected Anda menemukan 'waktu' terjadinya beberapa fitur dalam sinyal Anda, di mana Anda mendapatkan skor korelasi maksimum. (Contoh, ~ 25, ~ 190, ~ 610) dalam contoh Anda. Untuk mendapatkan konten frekuensi sinyal Anda pada saat itu, Anda bisa melihat FFT dari bagian sinyal Anda, ATAU, Anda dapat melihat FFT wavelet Anda pada skala itu, dan melihat respons frekuensinya.
Spacey
Jadi, apakah kita harus mengambil DCT setelah wavelet untuk mendapatkan komponen waktu dan frekuensi? Jika saya memiliki gelombang sinus (sumbu x = waktu, sumbu y = amplitudo) dan jika saya mengambil FFT maka saya memiliki komponen frekuensi dari fft dan komponen waktu dari sinyal asli lalu mengapa kita menggunakan wavelet?
Sufiyan Ghori
1
@Effected Alasan Anda menggunakan DFT / DCT, adalah untuk mendapatkan konten frekuensi global . DFT / DCT memberi tahu konten frekuensi Anda untuk seluruh sinyal. Di mana satu frekuensi spesifik dalam waktu? Kamu tidak tahu Namun jika Anda menggunakan wavelet, maka Anda dapat mengetahui tidak hanya apa frekuensi Anda, (mirip dengan DFT / DCT), tetapi juga di mana Anda memiliki frekuensi itu. (Lokasi dalam waktu).
Spacey
Sebagai catatan, frekuensi hanya ada sebagai konsep global. Segera setelah Anda mulai menyematkan frekuensi ke periode waktu tertentu, Anda benar-benar berbicara tentang distribusi frekuensi. Distribusi menyempit seiring rentang waktu atau skala meningkat. Menghitung DFT wavelet dari skala yang berbeda akan memberi Anda ide bagaimana menafsirkan hasil transformasi terkait kembali ke domain frekuensi; pikirkan filter bandpass. Wavelet Morlet kebetulan memiliki distribusi frekuensi Gaussian baik yang cocok untuk berhubungan kembali dengan konsep Fourier. @endolith menyentuh ini dalam jawabannya.
user2718
11

Plot ini sangat membantu saya untuk mengerti, berasal dari STFT latar belakang :

The kompleks Morlet (sinusoidal) wavelet terlihat dan berperilaku seperti kernel kompleks STFT (karena itu berasal dari Gabor transformasi , jenis STFT). Ketika Anda "menggesernya melewati" sinyal dengan frekuensi yang sama, itu cocok, tidak peduli fase sinyal yang Anda ukur, menghasilkan besaran dan pengukuran fase di setiap titik (dan ini adalah plot besarnya saja):

Besarnya transformasi wavelet Morlet kompleks

Plot besarnya transformasi wavelet Morlet kompleks

The bernilai real Morlet wavelet hanya cocok saat fase wavelet dan garis sinyal up. Jadi saat Anda menggesernya melewati sinyal yang Anda ukur, ia masuk dan keluar dari fase, menghasilkan maxima dan minima saat mereka membatalkan atau memperkuat:

Besarnya transformasi wavelet Morlet nyata yang berkelanjutan

Besarnya transformasi wavelet Morlet nyata yang berkelanjutan

(Sebenarnya, dalam hal ini, kami sedang merencanakan besarnya, sehingga kecocokan positif dan negatif menghasilkan titik oranye. Lebih baik beralih ke colormap bipolar sebagai gantinya, untuk menunjukkan bahwa beberapa puncak berada dalam fase dan yang lain berada di luar fase) :

Transformasi wavelet Morlet nyata kontinyu menggunakan bipolar colormap

Transformasi wavelet Morlet nyata kontinyu menggunakan bipolar colormap

Dengan Morlet bernilai nyata, informasi magnitude dan fase digabungkan menjadi nilai output tunggal.

Gelombang wavelet yang paling umum digunakan bernilai nyata, sehingga hanya cocok ketika gelombang yang Anda ukur dan gelombang yang Anda uji dengan antrean, yang mengarah ke osilasi atau riak dalam skalogram ini saat Anda menggeser satu melewati yang lain.

endolit
sumber
Dari mana Anda mendapatkan plot itu, btw?
Spacey
@Mohammad: Oh, jika Anda mengikuti tautan saya memiliki informasi lebih lanjut tentang mereka, tetapi singkatnya, saya membuatnya dengan kode ini: phy.uct.ac.za/courses/python/examples/…
endolith
Tautan sudah mati, sekarang mereka ada di github.com/emanuele/cwt atau gist.github.com/endolith/2783866
endolith
1
Sangat bagus! Saya memutuskan untuk belajar tentang wavelet, googled, dan dalam lima menit saya disalurkan kembali ke ekosistem stackexchange ke jawaban "aha!" Yang ditulis dengan baik. Ini adalah serangkaian gambar yang dipilih dengan baik, minimal. Terima kasih!
uhoh
4

Ini adalah contoh yang menurut saya adalah yang terbaik untuk memahami plot Wavelet.

Lihat gambar di bawah ini, The Waveform (A) adalah Signal asli kami, Waveform (B) menunjukkan wavelet Daubechies 20 (Db20) sekitar 1/8 detik yang dimulai pada awal (t = 0) dan secara efektif berakhir dengan baik sebelum 1/4 detik. Nilai nol diperpanjang hingga 1 detik penuh. Perbandingan titik-demi-titik * dengan sinyal pulsa kami (A) akan sangat buruk dan kami akan memperoleh nilai korelasi yang sangat kecil.

pertama-tama kita menggeser wavelet dasar atau ibu yang sedikit terentang ke kanan dan melakukan perbandingan sinyal dengan gelombang baru ini untuk mendapatkan nilai korelasi lain. Kami terus bergeser dan ketika wavelet Db20 berada pada posisi yang ditunjukkan pada (C) kami mendapatkan perbandingan yang sedikit lebih baik daripada dengan (B), tetapi masih sangat buruk karena (C) dan (A) adalah frekuensi yang berbeda.

Setelah kami terus menggeser wavelet hingga akhir interval waktu 1 detik, kami memulai lagi dengan wavelet yang sedikit diregangkan di awal dan berulang kali bergeser ke kanan untuk mendapatkan set lengkap nilai korelasi ini. Bentuk gelombang (D) menunjukkan wavelet Db20 membentang ke tempat frekuensinya kira-kira sama dengan pulsa (A) dan bergeser ke kanan sampai puncak dan lembah berbaris cukup baik. Pada jumlah pergeseran dan peregangan tertentu ini, kita harus mendapatkan perbandingan yang sangat baik dan nilai korelasi yang besar. Namun, semakin bergeser ke kanan, bahkan pada peregangan yang sama ini akan menghasilkan korelasi yang semakin buruk. Peregangan lebih lanjut tidak membantu sama sekali karena bahkan ketika berbaris, denyut nadi dan wavelet yang terlalu panjang tidak akan memiliki frekuensi yang sama.

masukkan deskripsi gambar di sini

Dalam CWT kami memiliki satu nilai korelasi untuk setiap shift dari setiap wavelet yang diregangkan. † Untuk menunjukkan nilai korelasi (kualitas "kecocokan") untuk semua peregangan dan pergeseran ini, kami menggunakan tampilan 3-D.

Ini dia,

masukkan deskripsi gambar di sini

Bintik-bintik terang menunjukkan di mana puncak dan lembah dari wavelet yang diregangkan dan yang bergeser paling cocok dengan puncak dan lembah dari pulsa yang disematkan (gelap saat tidak ada perataan, redup di mana hanya beberapa puncak dan lembah berbaris, tetapi paling terang di mana semua puncak dan lembah meluruskan). Dalam contoh sederhana ini, meregangkan wavelet dengan faktor 2 dari 40 hingga 20 Hz (peregangan filter dari titik 20 asli ke 40 poin) dan menggesernya 3/8 detik dalam waktu memberikan korelasi terbaik dan setuju dengan apa yang kita ketahui apriori atau “muka” tentang denyut nadi (denyut nadi terpusat pada 3/8 detik, frekuensi nadi 20 Hz).

Kami memilih wavelet Db20 karena terlihat sedikit seperti sinyal pulsa. Jika kita tidak tahu apriori seperti apa acara itu, kita bisa mencoba beberapa wavelet (mudah diaktifkan dalam perangkat lunak) untuk melihat mana yang menghasilkan tampilan CWT dengan titik-titik paling terang (menunjukkan korelasi terbaik). Ini akan memberi tahu kita sesuatu tentang bentuk acara.

Untuk contoh tutorial sederhana di atas kita bisa saja melihat secara visual lokasi dan frekuensi denyut nadi (A). Contoh berikutnya adalah sedikit lebih representatif dari wavelet di dunia nyata di mana lokasi dan frekuensi tidak terlihat oleh mata telanjang.

Lihat contoh di bawah ini,

masukkan deskripsi gambar di sini

Wavelet dapat digunakan untuk menganalisis peristiwa lokal. Kami membangun 300 titik sinyal gelombang sinus bervariasi perlahan dan menambahkan "kesalahan" kecil atau diskontinuitas (dalam kemiringan) pada waktu = 180. Kami tidak akan melihat kesalahan kecuali kami melihat closeup (b).

Sekarang mari kita lihat bagaimana FFT akan menampilkan Glitch ini, lihat, masukkan deskripsi gambar di sini

Frekuensi rendah dari gelombang sinus mudah untuk dilihat, tetapi kesalahan kecil tidak dapat dilihat.

Tetapi jika kita menggunakan CWT bukannya FFT itu akan dengan jelas menampilkan kesalahan itu, masukkan deskripsi gambar di sini

Seperti yang Anda lihat, tampilan wavelet CWT dengan jelas menunjukkan garis vertikal pada waktu = 180 dan pada skala rendah. (Wavelet memiliki sedikit peregangan pada skala rendah, menunjukkan bahwa kesalahannya sangat pendek.) CWT juga sebanding dengan gelombang sinus berosilasi besar yang menyembunyikan kesalahan tersebut. Pada skala yang lebih tinggi ini wavelet telah diregangkan (ke frekuensi yang lebih rendah) dan dengan demikian “menemukan” puncak dan lembah gelombang sinus pada waktu = 75 dan 225, Untuk diskontinuitas singkat ini kami menggunakan Db4 4-titik pendek. wavelet (seperti yang ditunjukkan) untuk perbandingan terbaik.

Sufiyan Ghori
sumber