python中的小波分解与重构 pywt.upcoef

小波分解后的重构

参数

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)

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
小波分解是一种将信号分解为多个频率带的方法,它可以用于信号的压缩、降噪、分析等。下面是用 Python 实现小波分解重构的示例代码: 首先,需要安装 pywt 库,它是 Python 用于小波变换的库。可以使用 pip 命令进行安装: ```python pip install pywt ``` 接下来,我们以一维信号为例进行分解和重构。 ```python import pywt import numpy as np import matplotlib.pyplot as plt # 生成信号 t = np.linspace(0, 1, 1000) x = np.sin(2 * np.pi * 5 * t) + np.sin(2 * np.pi * 10 * t) # 进行小波分解,得到近似系数和细节系数 cA, cD = pywt.dwt(x, 'db4') # 将近似系数和细节系数进行逆变换,得到重构信号 x_rec = pywt.idwt(cA, cD, 'db4') # 绘制原始信号和重构信号 plt.subplot(2, 1, 1) plt.plot(t, x) plt.title('Original Signal') plt.subplot(2, 1, 2) plt.plot(t, x_rec) plt.title('Reconstructed Signal') plt.tight_layout() plt.show() ``` 上述代码,我们首先生成了一个由两个正弦波组成的信号。然后,使用 pywt.dwt 函数进行小波分解,其第一个参数是输入信号,第二个参数是小波函数的名称,我们使用的是 db4 小波函数。函数返回的是近似系数 cA 和细节系数 cD。接着,使用 pywt.idwt 函数进行逆变换,得到重构信号 x_rec。最后,将原始信号和重构信号进行绘制,可以看到它们非常接近。 除了一维信号外,pywt 库还支持二维信号的小波分解重构。如果需要使用二维小波变换,可以使用 pywt.dwt2 和 pywt.idwt2 函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值