pywt模块使用
1、families
pywt.families(short=True)
返回软件内含的小波族。
- Parameters:
- short:是否简写
- Return:[list]
- [‘haar’, ‘db’, ‘sym’, ‘coif’, ‘bior’, ‘rbio’, ‘dmey’, ‘gaus’, ‘mexh’, ‘morl’, ‘cgau’, ‘shan’, ‘fbsp’, ‘cmor’]
2、wavelist
pywt.wavelist(family=None, kind='all')
返回该小波族(family)中包含的小波名称。
Parameters:
- family:简写小波族名称。如果为默认的None,则返回所有的小波名称。
- kind:’all’、’continuous’、’discrete’(离散或连续小波)
>>> pywt.wavelist('coif')
['coif1', 'coif2', 'coif3', 'coif4', 'coif5', 'coif6', 'coif7', ...
>>> pywt.wavelist(kind='continuous')
['cgau1', 'cgau2', 'cgau3', 'cgau4', 'cgau5', 'cgau6', 'cgau7', ...
3、Wavelet
(class) pywt.Wavelet(name, filter_bank=None)
描述由指定的小波名称标识的离散小波的性质的一个类(创建小波对象)。
Parameters:
- name:小波名称
- filter_bank:使用用户提供的滤波器组
4、wavefun
wavelet.wavefun()
在给定的分解阶次上依据小波系数近似给出尺度函数(phi)和小波函数(psi)。
对于正交小波:
>>> import pywt
>>> wavelet = pywt.Wavelet(‘db2′)
>>> phi, psi = wavelet.wavefun(level=5)
5、central_frequency
pywt.central_frequency(wavelet, precision=8)
计算小波函数的中心频率。
Parameters:
- wavelet:小波实例(str、tuple)
- precision:用wavefun计算的用于小波函数逼近的精度(level=precision)
6、cwt
pywt.cwt(data, scales, wavelet)
连续小波变换
- Parameters:
- data : array_like, 信号数组
- scales : 要使用的小波尺度(s)。
可以用 *f = scale2frequency(wavelet, scale)/sampling_period 来确定物理频率大小。f的单位是赫兹,采样周期的单位为秒。 - wavelet : Wavelet 对象或名字
- sampling_period : float
频率输出的采样周期。coefs的计算值与sampling_period的选择无关。scales不按抽样周期进行缩放。 - axis: int, optional
计算CWT的轴。如果不给出,则使用最后一个轴。
- Returns:
- coefs : array_like,
给定尺度和小波的输入信号的连续小波变换。第一维是scales,其余为data - frequencies : array_like。
如果采样周期的单位是秒,那么频率的单位是赫兹。否则,假设采样周期为1。
- coefs : array_like,
7、dwt
pywt.dwt(data, wavelet, mode='symmetric', axis=-1)
单层离散小波变换
-
Parameters:
-
data : array_like
输入信号数组 -
wavelet : Wavelet 对象或名字
-
mode : str, optional(默认’symmetric’)
信号扩展模式(mode详解)
[‘zero’, ‘constant’, ‘symmetric’, ‘periodic’, ‘smooth’, ‘periodization’, ‘reflect’, ‘antisymmetric’, ‘antireflect’] -
axis: int, optional
计算DWT的轴。如果不给出,则使用最后一个轴。
-
-
Returns: (cA, cD) : tuple
近似分量,细节分量 -
注:
-
系数数组的长度取决于所选模式。
对于除periodization以外的所有模式:
len(cA) == len(cD) == floor((len(data) + wavelet.dec_len - 1) / 2)
对于periodization模式
len(cA) == len(cD) == ceil(len(data) / 2)
-
-
Examples
>>> import pywt
>>> (cA, cD) = pywt.dwt([1, 2, 3, 4, 5, 6], 'db1')
>>> cA
array([ 2.12132034, 4.94974747, 7.77817459])
>>> cD
array([-0.70710678, -0.70710678, -0.70710678])
8、wavedec
pywt.wavedec(data, wavelet, mode='symmetric', level=None, axis=-1)
多层离散小波变换
-
Parameters:
-
data: array_like
-
wavelet : Wavelet object or name string
-
mode : str, optional
-
level : int, optional
分解级别(必须是>=0)。如果级别为None(默认),则将使用dwt_max_level函数计算该级别。 -
axis: int, optional
-
-
Returns: (list) [cA_n, cD_n, cD_n-1, …, cD_2, cD_1]
系数数组,其中n表示分解的级别。结果的第一个元素(CA_N)是近似分量,下面的元素(CD_n—CD_1)是细节分量。
-
Examples
>>> from pywt import wavedec
>>> coeffs = wavedec([1,2,3,4,5,6,7,8], 'db1', level=2)
>>> cA2, cD2, cD1 = coeffs
>>> cD1
array([-0.70710678, -0.70710678, -0.70710678, -0.70710678])
>>> cD2
array([-2., -2.])
>>> cA2
array([ 5., 13.])