小波分解后的重构
参数
part系数类型,可以是 ‘a’(近似系数)或 ‘d’(细节系数)
coeffs小波系数
wavelet:小波基
level:分解层数
take从结果中截取的中心部分的长度,默认为 0。take 参数决定了从结果中截取的数据长度。如果 take 为 1,则截取最中间的 2 个数;如果为 2,则截取最中间的两个数,即 2 和 3,以此类推。需要注意的是,take 并不会降维,只是从结果中进行截断1
重构之后的数据一致,可叠加!
如何选择自己需要的分量?
方法一、峭度指标
对时域分量求峭度,峭度大,信息量大,选择峭度最大的3个分量进行时域数据重构。
重构后的数据
方法二、噪声阈值
在小波去噪中,我们需要设置阈值来确定哪些小波系数将被保留,哪些将被丢弃。常见的阈值方法包括固定阈值、软阈值和硬阈值。
以下使用小波系数的中位数来设置软阈值:我们可以调整软阈值的系数以获得更好的去噪效果
```python
threshold = np.median(np.abs(coeffs[-1])) / 0.6745
coeffs = [pywt.threshold(coeff, threshold, mode='soft') for coeff in coeffs]
python两种重构方法的区别
pywt.waverec 和 pywt.upcoef 是 Python 中用于小波重构的函数,但它们之间存在一些区别:
pywt.waverec:
pywt.waverec 是多级逆离散小波变换(IDWT)的函数。
它接受小波系数列表 [cAn, cDn, cDn-1, …, cD2, cD1] 和小波基作为输入。
通过将这些系数进行逆变换,它可以重构原始信号。
使用方法:pywt.waverec(coeffs, wavelet, mode=‘symmetric’, axis=-1)
coeffs = pywt.wavedec(data, wl, level=level_n)
# coeffs [-1] = np.zeros(len(coeffs [-1])) 去掉高频噪声
recon = pywt.waverec(coeffs , wavelet=wl)
pywt.upcoef:
pywt.upcoef 用于重构小波系数。
它接受类型(‘a’ 或 ‘d’,分别对应近似系数和细节系数)、需要重建的系数、小波基和当前层次作为输入。
重建的结果是一个偏移版本的信号。(这里还没太理解偏移)
使用方法:pywt.upcoef(type, coeffs, wavelet, level)