[Python]小波分析库Pywavelets的常用 API

xiaoxiao2025-08-05  37

自动生成目录,用#号+空格区分;

离散小波()创建离散小波对象 离散小波变换单层小波变换1.一维离散信号处理2.二维离散信号处理3.n维离散信号处理 连续小波()创建连续小波对象 重点1.找到你想用的小波2.绘制小波函数离散类型小波连续类型小波 小波重建1.一维离散重建2.二维重建3.n维重建 维度计算coefficients的数量分解重构

保姆级人工翻译机 *号表示参量可选择不写

离散小波()

创建离散小波对象

Wavelet(name, filter_bank=None)

通过wavelist()查找库中已有的小波名,并调用。 如若要自定义一个小波对象,必须使用filter_bank参数,并以一个列表形式说明四个滤波器的值。 Methods 定义如下:

__len__(self, /)#返回长度len(self) __new__(*args, **kwargs)#从builtins.type创建并返回一个新对象,可通过help(type)查看详情 __reduce__ = __reduce_cython__(...) __repr__(self, /)#返回repr(self) __setstate__ = __setstate_cython__(...) __str__(self, /)#返回str(self) get_filters_coeffs(...)#获得滤波器参数 get_reverse_filters_coeffs(...)#获得逆滤波器参数 wavefun(...)#注意区分离散和连续的wavefun()的返回值有区别哦!

对象属性 symmetry:对称性 orthogonal:正交性 biorthogonal:双正交性 family_name:小波家族 族名 这里举个小栗子

import pywt import matplotlib.pyplot as plt wavelet=pywt.Wavelet('db2') print (wavelet.family_name)

显示结果>>>Daubechies 接着上面讲属性哈~

short_family_name:家族 族名简称 family_number:小波家族里排行老几 name number: 这两个不用我多说了吧~ filter_bank:返回包含四个列表的一个元组,列表数据分别是四个小波滤波器的系数(dec_lo, dec_hi, rec_lo, rec_hi) inverse_filter_bank:同上,这个是四个逆滤波器的系数(rec_lo[::-1], rec_hi[::-1], dec_lo[::-1], dec_hi[::-1]) rec_hi:单单查看高通重建滤波器的系数 Highpass reconstruction filter rec_lo:单单查看低通重建滤波器的系数 rec_len:查看重建滤波器的长度 以此类推,查看分解滤波器的系数,长度就不用我多说了吧

vanishing_moments_phi:尺度函数消失矩的数量 vanishing_moments_psi :小波函数消失矩的数量

离散小波变换

单层小波变换

dwt(data, wavelet, mode='symmetric', axis=-1)

data : 数据集 wavelet : 要使用的小波名 *mode : 信号扩展模式,详见 Modes (默认为: ‘symmetric’) *axis: 整型数据,用于计算离散小波变换的轴线,如若未给出则使用最后的轴线值。

返回值 (cA, cD) : 元组形式,近似(Approximation)系数和细节系数 注意:返回系数的长度取决于所选模式。 周期化(periodization)模式(“per”):len(cA) == len(cD) == ceil(len(data) / 2) 其余模式: len(cA) == len(cD) == floor((len(data) + wavelet.dec_len - 1) / 2)

1.一维离散信号处理

wavedec(data, wavelet, mode='symmetric', level=None, axis=-1)

data:就是你要输入的一维数据集啦 wavelet:调用小波的 简称 *mode:信号扩展模式,详见 Modes (默认为: ‘symmetric’) *level:分解等级,如果写 level=None,则默认使用 dwt_max_level function. *axis:计算离散小波变换的轴线,Axis over which to compute the DWT. If not given, the last axis is used.

返回值:[cA_n, cD_n, cD_n-1, …, cD_2, cD_1] 列表形式,n与分解level相关(例如level=5时,有6个返回值),CA_n是平均系数(approximation coefficients),CD_n~CD_1是细节系数(details coefficients)

2.二维离散信号处理

dwt2(data, wavelet, mode='symmetric', axes=(-2, -1))

data : 数据集 wavelet : 要使用的小波名 *mode : 信号扩展模式,详见 Modes (默认为: ‘symmetric’) *axis: 整型数据,用于计算离散小波变换的轴线,如若未给出则使用最后的轴线值。

返回值 (cA, (cH, cV, cD)) : 元组形式,近似(Approximation)系数和水平(horizontal) 、垂直(vertical)、斜线(diagonal)细节系数

wavedec2(data, wavelet, mode='symmetric', level=None, axes=(-2, -1))

data:当然是要输入二维数据集啦 wavelet:调用小波的简称,除此之外,这里还可以使用一个二维元组使用不同的小波应用在不同轴线上。 *mode:信号扩展模式,详见 Modes (默认为: ‘symmetric’),这里也可以使用一个二维元组对不同轴线上数据使用不同模式。 *level:分解等级,如果写 level=None,则默认使用 dwt_max_level function. *axis:二维整数型元组类型

返回值:[cAn, (cHn, cVn, cDn), … (cH1, cV1, cD1)] CAn仍然是n级分解的平均系数(approximation coefficients),剩下的元组数值都是细节系数(details coefficients),其中cH与axes[0]相关,而cV与axes[1]相关。

3.n维离散信号处理

wavedecn(data, wavelet, mode='symmetric', level=None, axes=None)

返回值:[cAn, {details_level_n}, … {details_level_1}] 从二维可同理推得。

连续小波()

创建连续小波对象

ContinuousWavelet(name)

这部分和创建离散小波对象是很相似的,在这里就不做赘述了,直接上 Methods 定义如下:

__len__(self, /)#返回长度len(self) __new__(*args, **kwargs)#从builtins.type创建并返回一个新对象,可通过help(type)查看详情 __reduce__ = __reduce_cython__(...) __repr__(self, /)#返回repr(self) __setstate__ = __setstate_cython__(...) __str__(self, /)#返回str(self) get_filters_coeffs(...)#获得滤波器参数 get_reverse_filters_coeffs(...)#获得逆滤波器参数 wavefun(...)#注意区分离散和连续的wavefun()的返回值有区别哦!

对象属性 symmetry:对称性 orthogonal:正交性 biorthogonal:双正交性 family_name:小波家族 族名 short_family_name:家族 族名简称 family_number:小波家族里排行老几 name number 除了以上属性是和离散相似的,连续小波还有自己比较特殊的 lower_bound: upper_bound dt complex_cwt

针对 shan, fbsp, cmor这三族小波。还可查看带宽频率和中心频率属性 bandwidth_frequency center_frequency 针对fbsp小波,还可查看其参数顺序 属性 fbsp_order

突然蹦出来的栗子

>>> wavelet=pywt.Wavelet('db3') >>> wavelet pywt._extensions._pywt.Wavelet(name='db3', filter_bank=([0.03522629188570953, -0.08544127388202666, -0.13501102001025458, 0.45987750211849154, 0.8068915093110925, 0.33267055295008263], [-0.33267055295008263, 0.8068915093110925, -0.45987750211849154, -0.13501102001025458, 0.08544127388202666, 0.03522629188570953], [0.33267055295008263, 0.8068915093110925, 0.45987750211849154, -0.13501102001025458, -0.08544127388202666, 0.03522629188570953], [0.03522629188570953, 0.08544127388202666, -0.13501102001025458, -0.45987750211849154, 0.8068915093110925, -0.33267055295008263])) >>> print(wavelet) Wavelet db3 Family name: Daubechies Short name: db Filters length: 6 Orthogonal: True Biorthogonal: True Symmetry: asymmetric DWT: True CWT: False >>>

重点

1.找到你想用的小波

wavelist(family=None, kind='all')

罗列出所有可用小波 由于笔者电脑中安装的是版本是 所以family中只能查看 ‘haar’, ‘db’, ‘sym’, ‘coif’, ‘bior’, ‘rbio’, ‘dmey’, ‘gaus’, ‘mexh’, ‘morl’, ‘cgau’, ‘shan’, ‘fbsp’, ‘cmor’ 这些小波家族。 *kind: 从这三种选,‘all’, ‘continuous’, ‘discrete’;默认为all

>>> import pywt >>> pywt.wavelist('coif') ['coif1', 'coif2', 'coif3', 'coif4', 'coif5', 'coif6', 'coif7', ... >>> pywt.wavelist(kind='continuous') ['cgau1', 'cgau2', 'cgau3', 'cgau4', 'cgau5', 'cgau6', 'cgau7', ...

2.绘制小波函数

离散类型小波

wavefun(self, level=8)

*level : 整型,默认level=8

返回值: [phi, psi, x] : 就是一个数列 分别是正交小波的尺度函数( scaling function),小波函数(wavelet function)和x轴。 或者 [phi_d, psi_d, phi_r, psi_r, x] : 同样是一个二维列表 分别是双正交小波的 关于分解和重构的尺度函数( scaling function),小波函数(wavelet function)和x轴。

连续类型小波

wavefun(self, level=8, length=None)

*level :整型,默认level为8 *length : 整型,因为length=2level,level与length二选一即可。

返回值:数列组合 psi : array_like Wavelet function computed for grid xval xval : array_like grid going from lower_bound to upper_bound

注意事项: B样条:B-spline wavelet ('fbsp') 有 bandwidth_frequency, center_frequency 和fbsp_order 参数可选。

香农:Shannon wavelet ('shan') 有bandwidth_frequency和 center_frequency 参数可选。

Morlet wavelet ('cmor') 有 bandwidth_frequency and center_frequency 参数可选。 #绘制尺度函数和小波函数图形

#绘制尺度函数和小波函数图形 import pywt import matplotlib.pyplot as plt wavelet=pywt.ContinuousWavelet('gaus8') #wavelet.upper_bound=5 #wavelet.lower_bound=-5 [psi,xval] = wavelet.wavefun( level=10)#或者写length=1024 plt.plot(xval,psi) plt.title("Gaussian Wavelet of order 1024") plt.show()

小波重建

1.一维离散重建

waverec(coeffs, wavelet, mode='symmetric', axis=-1)

2.二维重建

waverec2(coeffs, wavelet, mode='symmetric', axes=(-2, -1))

3.n维重建

waverecn(coeffs, wavelet, mode='symmetric', axes=None)

维度计算

coefficients的数量

wavedecn_size(shapes)处理wavedecn_shapes()或wavedecn()的返回值

分解重构

upcoef(part, coeffs, wavelet, level=1, take=0) downcoef(part, data, wavelet, mode='symmetric', level=1)
转载请注明原文地址: https://www.6miu.com/read-5034299.html

最新回复(0)