脑电信号处理学习笔记(一)——pywt

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。

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.])
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值