如何在python中使用小波分解来限制用于重建一维信号的系数数量

时间:2015-12-04 11:23:08

标签: python signals decomposition pywavelets

我是使用小波分解领域的新手。我试图在python中使用pywt分解和重建(使用非常少的系数)一维数据。从这个documentation我写了下面的代码,用512个系数(即 cA cD 的大小重建数据)但是我认为它们应该是一种选择(限制)我认为可以产生合理数据重建的系数的方法。

%matplotlib inline
import pylab as plt
import pywt

# Data
data = ll[5].x0

n = len(data)

w = 'db1'

(cA, cD) = pywt.dwt(data, w, 'sp1')  # Decomposition 

# Perfect Reconstruction of data
perfect_reconstruction = pywt.upcoef('a',cA[:],w,take=n) + pywt.upcoef('d',cD[:],w,take=n)
reconstructed = pywt.upcoef('a',cA[:],w,take=n) # Approximate Reconstruction of data

x = np.arange(1.008,1.008+1024*0.001,0.001)

plt.figure(figsize=(20,8))
plt.subplot2grid((2,1),(0,0)) 
plt.title('Perfect Reconstruction of data - %s  with rms error of 1.39 x e$^{-15}$'%w, fontsize=20)
plt.plot(x,data,'-',label='Data')

plt.plot(x,perfect_reconstruction,'-r',label='Reconstructed data')
plt.legend(loc='best',fontsize='x-large')
plt.xticks(fontsize = 14)
plt.yticks(fontsize = 14)

plt.subplot2grid((2,1),(1,0))
plt.title('Approximate Reconstruction of data - %s with rms error of 1.30 x e$^{-3}$'%w, fontsize=20)
plt.plot(x,data,'-',label='Data')

plt.plot(x,reconstructed,'-r',label='Reconstructed data')
plt.legend(loc='best',fontsize='x-large')
plt.xticks(fontsize = 14)
plt.yticks(fontsize = 14)
plt.show()

Figure 1 请问,如果有人可以帮我提出任何建议,我可以用更少的系数实现正确的分解和重建,我将非常感谢它以及有关如何编写数学背后的任何信息,因为我的目标是找到一个数学表达式最好用分解后的系数来描述数据。

0 个答案:

没有答案