一维离散小波变换原理和代码实现

基本原理:

离散小波变换:对连续小波变换的尺度因子和时移动因子采用不同的离散条件进行离散,得到Discrete Wavelet Transform(DWT)。降低计算量的同时,保持连续小波变换的光滑性、紧支性、对称性。对比傅里叶变换,傅里叶变换把信号分解成一系列正弦波,而小波变换把信号分解成一系列尺度和时移不同的小波;


离散小波函数:
ψ j , k ( t ) = 1 a 0 i ψ ( t − k a 0 i b 0 a 0 i ) = a 0 − j / 2 ψ [ a 0 − j ( t − k a 0 j b 0 ) ] = a 0 − j / 2 ψ ( a 0 − j t − k b 0 ) \begin{aligned} \psi_{j,k}(t)=& \frac{1}{\sqrt{a_{0}^{i}}}\psi\Bigl(\frac{t-k a_{0}^{i}b_{0}}{a_{0}^{i}}\Bigr) \\ =& a_{0}^{-j/2}\psi\bigl[a_{0}^{-j}\left(t{-}k a_{0}^{j}b_{0}\right)\bigr] \\ =& a_{0}^{-j/2}\psi(a_{0}^{-j}t-k b_{0}) \end{aligned} ψj,k(t)===a0i 1ψ(a0itka0ib0)a0j/2ψ[a0j(tka0jb0)]a0j/2ψ(a0jtkb0)


离散小波变换:
W T f ( j , k ) = ⟨ f ( t ) , ψ i . t ( t ) ⟩ = ∫ − ∞ ∞ f ( t ) ψ j , k ( t ) ‾ d t = a 0 − j / 2 ∫ − ∞ ∞ f ( t ) ψ ( a 0 − j t − k b 0 ) d t \begin{aligned} \mathbf{W T}_{f}(j,k)& =\langle f(t),\psi_{i.t}(t)\rangle \\ &=\int_{-\infty}^{\infty}f(t)\overline{\psi_{j,k}(t)}\mathrm{d}t \\ &=a_{0}^{-j/2}\int_{-\infty}^{\infty}f(t)\psi(a_{0}^{-j}t-k b_{0})\mathrm{d}t \end{aligned} WTf(j,k)=f(t),ψi.t(t)⟩=f(t)ψj,k(t)dt=a0j/2f(t)ψ(a0jtkb0)dt


Mallat算法:

Mallat算法对信号进行多分辨率分解,将原函数划分为近似(approximation)部分和细节(detail)部分。

使用高通滤波器和低通滤波器进行滤波(可以看做卷积操作),再进行二抽取。,不断进行下去。

在这里插入图片描述

代码实现
PyWavelets/pywt: PyWavelets - Wavelet Transforms in Python (github.com)


参考:

1、《小波变换及其工程应用》

2、PyWavelets/pywt: PyWavelets - Wavelet Transforms in Python (github.com)

3、Python 离散小波变换(DWT) pywt库_import pywt_SongpingWang的博客-CSDN博客

猜你喜欢

转载自blog.csdn.net/KPer_Yang/article/details/130396162