Analisis wavelet. Dasar-dasarnya

Pendahuluan


Kata bahasa Inggris wavelet (dari bahasa Prancis "ondelette") secara harfiah diterjemahkan sebagai "gelombang pendek (kecil)." Dalam berbagai terjemahan artikel asing ke dalam bahasa Rusia, ada juga istilah: “burst”, “burst function”, “low-wave function”, “wave”, dll.

Transformasi wavelet (VP) banyak digunakan untuk analisis sinyal. Selain itu, ia menemukan aplikasi hebat di bidang kompresi data. VP dari sinyal satu dimensi adalah perwakilannya dalam bentuk seri umum atau integral Fourier atas sistem fungsi basis.

 psiab(t)= frac1 sqrta psi kiri( fractba kanan) , (1)

dibangun dari ibu (sumber) wavelet  psi(t) memiliki sifat-sifat tertentu karena operasi time shift (b) dan perubahan skala temporal (a).

Pengganda 1/ sqrta memastikan independensi norma fungsi (1) dari angka penskalaan (a). Untuk nilai yang diberikan dari parameter a dan b, fungsinya  psiab(t) dan ada wavelet yang dihasilkan oleh mother wavelet  psi(t) .

Contohnya adalah wavelet topi Meksiko dalam domain waktu dan frekuensi:

Daftar wavelet untuk domain waktu
from numpy import* import matplotlib.pyplot as plt x= arange(-4,30,0.01) def w(a,b,t): f =(1/a**0.5)*exp(-0.5*((tb)/a)**2)* (((tb)/a)**2-1) return f plt.title(" « »:\n$1/\sqrt{a}*exp(-0,5*t^{2}/a^{2})*(t^{2}-1)$") y=[w(1,12,t) for t in x] plt.plot(x,y,label="$\psi(t)$ a=1,b=12") y=[w(2,12,t) for t in x] plt.plot(x,y,label="$\psi_{ab}(t)$ a=2 b=12") y=[w(4,12,t) for t in x] plt.plot(x,y,label="$\psi_{ab}(t)$ a=4 b=12") plt.legend(loc='best') plt.grid(True) plt.show() 




Daftar untuk spektrum wavelet
 from numpy import* from pylab import * from scipy import * import os def w(a,b,t): f =(1/a**0.5)*exp(-0.5*((tb)/a)**2)* (((tb)/a)**2-1) return f x= arange(-4,30,0.2) def plotSpectrum(y,Fs): n = len(y) k = arange(n) T = n/Fs frq = k/T frq = frq[range(int(n/2))] Y = fft(y)/n Y = Y[range(int(n/2))] return Y,frq xlabel('f (Hz)') ylabel('|Y(f)|') Fs=1024.0 y=[w(1,12,t) for t in x] Y,frq=plotSpectrum(y,Fs) plot(frq,abs(Y),label="$\psi(\omega)$ a=1,b=12") y=[w(2,12,t) for t in x] Y,frq=plotSpectrum(y,Fs) plot(frq,abs(Y),label="$\psi_{ab}(\omega)$ a=2 b=12") y=[w(4,12,t) for t in x] Y,frq=plotSpectrum(y,Fs) plot(frq,abs(Y),label="$\psi_{ab}(\omega)$ a=4 b=12") plt.title(" « »   $\omega$") legend(loc='best') grid(True) show() 




Kesimpulan:

1. Antara konsep Fourier harmonik dan skala wavelet, benar-benar ada hubungan. Hal utama dalam hubungan ini adalah proporsi terbalik dari frekuensi dan skala alami. Selain itu, mengurangi skala, kami meningkatkan bandwidth dari spektrum wavelet.

2. Dengan mengubah skala (meningkatkan lead ke penyempitan spektrum fungsi Fourier  psiab(t) ), wavelet dapat mendeteksi perbedaan karakteristik pada skala yang berbeda (frekuensi), dan karena pergeseran, menganalisis sifat sinyal pada titik yang berbeda pada seluruh interval yang dipelajari. Oleh karena itu, ketika menganalisis sinyal non-stasioner, karena properti lokalitas wavelet, mereka mendapatkan keuntungan yang signifikan atas transformasi Fourier, yang hanya memberikan informasi global tentang frekuensi (skala) dari sinyal yang dianalisis, karena sistem fungsi yang digunakan (eksponen kompleks atau sinus dan kosinus) didefinisikan pada interval tak terbatas.

3. Daftar di atas yang ditulis dalam bahasa Python tingkat tinggi yang didistribusikan secara bebas memungkinkan Anda memilih fungsi untuk wavelet yang memenuhi persyaratan yang ditentukan. Namun, perlu juga memperhitungkan semua tanda-tanda utama dari wavelet.

Tanda-tanda utama wavelet


Keterbatasan. Kuadrat dari norma fungsi harus terbatas:
 left | psi right |2= int infty infty kiri| psi(t) right|2dt< infty . (2)

Lokalisasi VP, berbeda dengan transformasi Fourier, menggunakan fungsi awal lokal baik dalam waktu dan frekuensi. Untuk melakukan ini, cukup bahwa persyaratan terpenuhi:

 kiri| psi(t) kanan| leqC(1+ kiri|t kanan|)1 varepsilon dan
 kiri|S psi( omega) kanan| leqC(1+ kiri| omega kanan|)1 varepsilon di  varepsilon>0 , (3)

Misalnya, fungsi delta  delta(t) dan fungsi harmonik tidak memenuhi kondisi yang diperlukan untuk lokalisasi simultan dalam domain waktu dan frekuensi.

Rata-rata nol. Grafik fungsi asli harus berosilasi (bergantian) di sekitar nol pada sumbu waktu dan memiliki area nol:

 int infty infty psi(t)dt=0 . (4)

Dari kondisi ini, menjadi jelas pilihan nama "wavelet" - gelombang kecil.

Sama dengan area fungsi nol  psi(t) , yaitu momen nol, mengarah pada fakta bahwa Fourier berubah S psi( omega) fungsi ini sama dengan nol untuk  omega=0 dan memiliki bentuk filter band-pass. Untuk berbagai nilai (a), ini akan menjadi seperangkat filter bandpass.

Seringkali untuk aplikasi perlu bahwa tidak hanya nol, tetapi semua n momen pertama sama dengan nol:

 int infty inftytn psi(t)dt=0 . (5)

Gelombang-ke-n memungkinkan seseorang untuk menganalisis struktur sinyal frekuensi tinggi yang lebih halus, menekan komponen-komponennya yang perlahan berubah.

Buatan sendiri Fitur karakteristik VP adalah kemiripan diri. Semua wavelet dari keluarga tertentu  psiab(t) memiliki jumlah osilasi yang sama dengan wavelet ibu  psi(t) , karena diperoleh darinya melalui transformasi skala (a) dan pergeseran (b).

Transformasi Wavelet Berkelanjutan


Transformasi wavelet kontinu (integral) (NVP atau WT - transformasi wavelet kontinu). Kami membangun dasar  psiab(t) menggunakan transformasi skala kontinu (a) dan transfer (b) dari wavelet ibu  psi(t) dengan nilai arbitrer dari parameter dasar a dan b dalam rumus (1).

Kemudian, menurut definisi, langsung (analisis) dan membalikkan (sintesis) NVP (yaitu, PNVP dan ONVP) dari sinyal S (t) ditulis sebagai berikut:
Ws(a,b)=(S(t), psiab(t))= frac1 sqrta int infty inftyS(t) psi kiri( fractba kanan)dt , (6)

S(t)= frac1C psi int infty infty int infty inftyWs(a,b) psiab(t) fracdadba2 , (7)

dimana C psi - koefisien normalisasi,
C psi= int infty infty kiri| psi( omega) kanan|2 kiri| omega right|1d omega< infty
di mana: (•, •) adalah produk skalar dari faktor yang sesuai,
 mathbf psi( omega) - Transformasi Fourier dari wavelet  psi(t) . Untuk wavelet ortonormal C psi=1 .

Ini mengikuti dari (6) bahwa spektrum wavelet Ws(b,a) (spektrum wavelet, atau spektrum skala waktu), tidak seperti spektrum Fourier (spektrum tunggal), adalah fungsi dari dua argumen: argumen pertama a (skala waktu) mirip dengan periode osilasi, mis. terbalik dengan frekuensi, dan b –– kedua mirip dengan offset sinyal di sepanjang sumbu waktu.

Perlu dicatat bahwa Ws(b,a0) mencirikan ketergantungan waktu (pada a=a0) , sedangkan dependensi Ws(a,b0) adalah mungkin untuk mencocokkan ketergantungan frekuensi (untuk b=b0 )

Jika sinyal yang dipelajari S (t) adalah satu pulsa berdurasi tunggal  tauu terkonsentrasi di lingkungan t=t0 , maka spektrum waveletnya akan memiliki nilai terbesar di sekitar titik dengan koordinat a= tauu,b=t0 .

Metode presentasi Ws(b,a) mungkin berbeda. Spektrum Ws(b,a) adalah permukaan dalam ruang tiga dimensi. Namun, seringkali alih-alih gambar permukaan, proyeksi ke bidang ab disajikan dengan tingkat iso (atau gambar berbagai warna), yang memungkinkan untuk melacak perubahan intensitas amplitudo EP pada skala yang berbeda (a) dan dalam waktu (b).

Selain itu, mereka menggambarkan garis-garis ekstrem lokal dari permukaan ini, yang disebut kerangka (skeleton), yang mengungkapkan struktur sinyal yang dianalisis.

Transformasi wavelet kontinu saat menentukan spektrum wavelet berdasarkan induk wavelet - “Topi Meksiko”.



Gelombang ibu lainnya yang digunakan untuk NVP juga digunakan:



Continuous VP banyak digunakan dalam pemrosesan sinyal. Secara khusus, analisis wavelet (VA) memberikan peluang unik untuk mengenali fitur dan fungsi sinyal (fungsi) lokal dan “halus”, yang penting di banyak bidang teknik radio, komunikasi, elektronik radio, geofisika, dan cabang ilmu pengetahuan dan teknologi lainnya. Mari kita pertimbangkan kemungkinan ini dengan beberapa contoh sederhana.

Osilasi harmonik.

Sinyal memiliki bentuk: s(t)=Asin( omegat phi)

dimana: A=1V, omega= frac2 piT= frac2 pi50, psi=0

Fungsi pembentukan wavelet: MHAT(t):= fracd2dt2exp(t2/2) ,

Wavelet:  psi(a,b,t)= frac1 sqrtaMHAT kiri( fractba kanan) ,

Spektrum wavelet: N: = 256, a: = 1..30, b: = 0..50, W(a,b):= intNN psi(a,b,t)s(t)dt,Nab:=W(a,b). .

Daftar program
 from scipy.integrate import quad from numpy import* import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from matplotlib import cm N=256 T=50 def S(t): return sin(2*pi*t/T) plt.figure() plt.title('  ', size=12) y=[S(t) for t in arange(0,100,1)] x=[t for t in arange(0,100,1)] plt.plot(x,y) plt.grid() def w(a,b): f = lambda t :(1/a**0.5)*exp(-0.5*((tb)/a)**2)* (((tb)/a)**2-1)*S(t) r= quad(f, -N, N) return round(r[0],3) x = arange(1,50,1) y = arange(1,50,1) z = array([w(i,j) for j in y for i in x]) X, Y = meshgrid(x, y) Z = z.reshape(49,49) fig = plt.figure("- :  ") ax = Axes3D(fig) ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet) ax.set_xlabel(' :a') ax.set_ylabel(': b') ax.set_zlabel(' : $ N_{ab}$') plt.figure("2D-  z = w (a,b)") plt.title(' ab    ', size=12) plt.contourf(X, Y, Z,100) plt.show() 




Grafik sinyal.



Grafik spektrum dua parameter Nab=W(ab) ditampilkan sebagai permukaan dalam ruang tiga dimensi.



Perlu dicatat bahwa bagian W (a, b) untuk skala waktu a=a0 mencirikan osilasi awal s (t). Selain itu, amplitudo maksimum di a0:1/ omega . Ketergantungan W(a0,b0) dapat cocok dengan spektrum osilasi saat ini di b=b0 .

Jumlah dari dua osilasi harmonik.

Sinyal memiliki bentuk: s(t):=A1sin( omega1t)+A2sin( omega2t)

dimana: A1=A2=1V, omega1= frac2 piT1, omega2= frac2 piT2,T1=50s,T2=10s .

MHAT(t):= fracd2dt2 kiri[et2/2 kanan] , N: = 256,
 psi(a,b,t):=MHAT kiri( fractba kanan),W(a,b):= intNN psi(a,b,t)f(t)dt , a: = 1 ... 30, b: = 0 ... 50, Nab:=W(a,b) .

Daftar program
 from scipy.integrate import quad from numpy import* import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from matplotlib import cm N=256 def S(t): return sin(2*pi*t/10)+sin(2*pi*t/50) plt.figure('    ') plt.title('    ', size=12) y=[S(t) for t in arange(0,250,1)] x=[t for t in arange(0,250,1)] plt.plot(x,y) plt.grid() def w(a,b): f = lambda t :(1/a**0.5)*exp(-0.5*((tb)/a)**2)* (((tb)/a)**2-1)*S(t) r= quad(f, -N, N) return round(r[0],3) x = arange(1,50,1) y = arange(1,50,1) z = array([w(i,j) for j in y for i in x]) X, Y = meshgrid(x, y) Z = z.reshape(49, 49) fig = plt.figure("-:2-  ") ax = Axes3D(fig) ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet) ax.set_xlabel(' :a') ax.set_ylabel(': b') ax.set_zlabel(' : $ N_{ab}$') plt.figure("2D-  z = w (a,b)") plt.title(' ab    ', size=12) plt.contourf(X, Y, Z, 100) plt.figure() q=[w(2,i) for i in y] p=[i for i in y] plt.plot(p,q,label='w(2,b)') q=[w(15,i) for i in y] plt.plot(p,q,label='w(15,b)') q=[w(30,i) for i in y] plt.plot(p,q,label='w(30,b)') plt.legend(loc='best') plt.grid(True) plt.figure() q=[w(i,13) for i in x] p=[i for i in x] plt.plot(p,q,label='w(a,13)') q=[w(i,17) for i in x] plt.plot(p,q,label='w(a,17)') plt.legend(loc='best') plt.grid(True) plt.show() 





Grafik sinyal.



Plot spektrum dua-parameter W (a, b) ditampilkan sebagai permukaan dalam ruang tiga dimensi.



Bidang parameter a, b di mana hasil EP disorot dalam area berwarna.



Grafik menunjukkan “penampang” spektrum wavelet untuk dua nilai parameter a. Dengan parameter skala waktu yang relatif kecil a, untuk a1=2(a1:1/ omega2) , penampang spektrum hanya membawa informasi tentang komponen frekuensi tinggi dari sinyal, menyaring (menekan) komponen frekuensi rendahnya.

Sebagai peningkatan, perluasan fungsi basis  psi( fractba) , oleh karena itu, mempersempit spektrumnya, dan mempersempit bandwidth dari "jendela" frekuensi. Hasilnya, kapan a2=15(a2:1/ omega1) penampang spektrum hanya komponen frekuensi rendah dari sinyal.

Dengan peningkatan lebih lanjut dalam a, pita jendela masih menurun dan tingkat komponen frekuensi rendah ini menurun menjadi komponen konstan (untuk a> 25), yang sama dengan nol untuk sinyal yang dianalisis.



Grafik menunjukkan bagian-bagian dari spektrum wavelet W (a, b) karakterisasi
spektrum sinyal saat ini di b1=13 dan b2=17 . Spektrum sinyal yang dipertimbangkan, berbeda dengan harmonik, mengandung komponen frekuensi tinggi di wilayah nilai kecil skala waktu a (a: 1..3), yang sesuai dengan komponen kedua sinyal A2sin( omega2t) .

Momentum persegi panjang.

U:=5,t0:=20, tau:=60
s(t):= beginvmatrixU,jikat0 leqt leqt0+ tau0,jikatidak endvmatrix
MHAT(t):= fracd2dt2exp kiri( fract22 kanan)
N:=128, psi(a,b,t):=MHAT kiri( fractba kanan),W(a,b):= intNN psi(a,b,t)f(t)dt
a:=1..50,b:=0..100,Nba:=W(a,b)

Daftar program
 from scipy.integrate import quad from numpy import* import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from matplotlib import cm N=256 def S(t): U=5;t0=20;tau=60 if t0<=t<=t0+tau: return U else: return 0 plt.figure() plt.title(' ', size=12) y=[S(t) for t in arange(0,120,1)] x=[t for t in arange(0,120,1)] plt.plot(x,y) plt.grid() def w(a,b): f = lambda t :(1/a**0.5)*exp(-0.5*((tb)/a)**2)* (((tb)/a)**2-1)*S(t) r= quad(f, -N, N) return round(r[0],3) x = arange(1,100,1) y = arange(1,100,1) z = array([w(i,j) for j in y for i in x]) X, Y = meshgrid(x, y) Z = z.reshape(99, 99) fig = plt.figure("3D-  ") ax = Axes3D(fig) ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet) ax.set_xlabel(' :a') ax.set_ylabel(': b') ax.set_zlabel(' : $ N_{ab}$') plt.figure("2D-  z = w (a,b)") plt.title(' ab    ', size=12) plt.contourf(X, Y, Z,100) plt.show() 











Spektrum wavelet diperlihatkan dalam grafik, spektrum wavelet dengan baik menyampaikan fitur halus dari sinyal - lompatannya pada sampel b = 20 dan b = 80 (untuk: 1.10).

Kesimpulan


Publikasi ini bersifat mendidik, memberikan informasi dasar tentang analisis wavelet secara umum, dan contoh-contoh sederhana dalam bahasa pemrograman tingkat tinggi yang didistribusikan secara bebas, Python menunjukkan fitur-fitur analisis wavelet berkelanjutan dengan grafik 3D dan visualisasi 2D yang luas.

PS Penulis tidak mengurangi keuntungan tanpa syarat dari analisis wavelet menggunakan Matlab baik dalam hal jumlah wavelet dan kecepatan. Namun dalam Python masih ada ruang untuk pengembangan lebih lanjut: scipy.signal dan PyWavelets.

Source: https://habr.com/ru/post/id449646/


All Articles