2017-04-20 94 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逆离散小波变换,这样做几乎同样的事情,但在这样做让您可以排列系数并在开发时更高效。