我在哪里可以看到我可以传递给scipy.signal.cwt的内置小波函数列表?

Fra*_*urt 6 python signal-processing scipy wavelet

scipy.signal.cwt的文件:

scipy.signal.cwt(数据,小波,宽度)

wavelet:函数小波函数,应该有2个参数.第一个参数是返回的向量将具有的点数(len(小波(宽度,长度))==长度).第二个是宽度参数,定义小波的大小(例如高斯的标准偏差).请参阅满足这些要求的ricker.小波:函数小波函数,它应该带有2个参数.

除此之外scipy.signal.ricket,我可以传递给scipy.signal.cwt的其他内置小波函数是什么?

我在scipy/scipy/signal/wavelets.py中看到

__all__ = ['daub', 'qmf', 'cascade', 'morlet', 'ricker', 'cwt']
Run Code Online (Sandbox Code Playgroud)

并且查看每个小波函数的参数,ricket似乎只能使用scipy.signal.cwt(data, wavelet, widths)(因为只ricker需要2个参数).

Fra*_*urt 7

在SciPy用户列表上询问了问题,回答1:

我发现CWT模块很混乱,所以我推出了自己的模块:

https://github.com/Dapid/fast-pycwt

它专为速度而设计(我的运行时间从4小时缩短到20分钟).它没有经过彻底的测试,仅限于单人和双人; 但对我来说,这是一个"足够好"的状态.

答案2:

您可能还会发现我的版本很有用:

https://github.com/aaren/wavelets

我还发现scipy小波令人困惑.我的版本包括一个更快的cwt,它可以采用以频率或时间表示的小波.

我发现让小波函数更加直观,需要时间/频率和宽度作为参数而不是现在的方法(我更喜欢在真实空间而不是样本空间中思考).

目前,带有scipy的morlet小波, scipy.signal.wavelets.morlet不能用作cwt的输入.我觉得这很不幸.

另外,本cwt不允许复杂的输出.这对ricker没有影响,但小波函数通常很复杂.

我修改过的'cwt'方法在这里:

https://github.com/aaren/wavelets/blob/master/wavelets.py#L15

它可以接受在时间或频率空间中定义的小波函数,使用fftconvolve,并允许复杂的输出.

我的背景是基于对Torrence和Compo的阅读:

Torrence和Compo,"小波分析实用指南"(BAMS,1998)

http://paos.colorado.edu/research/wavelets/

希望那有所帮助,

亚伦

  • 作为第一个作者,我推荐第二个,除非你真的需要速度. (6认同)