2017-04-20 91 views
1

我想了解使用pywavelet庫的小波的概念。我的第一步是看看如何使用小波係數重建給定的輸入信號。請參閱下面我的代碼:pywavelet信號重構

db1 = pywt.Wavelet('db1') 
cA6, cD6,cD5, cD4, cD3, cD2, cD1=pywt.wavedec(data, db1, level=6) 
cA6cD_approx = pywt.upcoef('a',cA6,'db1',take=n, level=6) + pywt.upcoef('d',cD1,'db1',take=n, level=6)\ 
+pywt.upcoef('d',cD2,'db1',take=n, level=6) + pywt.upcoef('d',cD3,'db1',take=n, level=6) + \ 
    pywt.upcoef('d',cD4,'db1',take=n, level=6) + pywt.upcoef('d',cD5,'db1',take=n, level=6) + \ 
    pywt.upcoef('d',cD6,'db1',take=n, level=6) 

plt.figure(figsize=(28,10)) 
p1, =plt.plot(t, cA6cD_approx,'r') 
p2, =plt.plot(t, data, 'b') 
plt.xlabel('Day') 
plt.ylabel('Number of units sold') 
plt.legend([p2,p1], ["original signal", "cA6+cD* reconstructed"]) 
plt.show() 

得到以下情節: Reconstruction using upcoef

現在,當我用waverec()方法,信號重構是相當準確的。請看下圖: Reconstruction using waverec

有人能解釋一下兩種重建方法的區別嗎?

回答

1

他們都是逆離散小波轉換「upcoef」是使用係數直接重建而「waverec」是一個多層次1D逆離散小波變換,這樣做幾乎同樣的事情,但在這樣做讓您可以排列係數並在開發時更高效。