7

scipy.signal.cwt's documentation says:

scipy.signal.cwt(data, wavelet, widths)

wavelet : function Wavelet function, which should take 2 arguments. The first argument is the number of points that the returned vector will have (len(wavelet(width,length)) == length). The second is a width parameter, defining the size of the wavelet (e.g. standard deviation of a gaussian). See ricker, which satisfies these requirements.wavelet : function Wavelet function, which should take 2 arguments.

Beyond scipy.signal.ricket, what are the other built-in wavelet functions that I can pass to scipy.signal.cwt?

I see in scipy / scipy / signal / wavelets.py

__all__ = ['daub', 'qmf', 'cascade', 'morlet', 'ricker', 'cwt']

and looking at the arguments of each of those wavelet functions, only ricket seems to work with scipy.signal.cwt(data, wavelet, widths) (as only ricker takes precisely 2 arguments).

ali_m
  • 71,714
  • 23
  • 223
  • 298
Franck Dernoncourt
  • 77,520
  • 72
  • 342
  • 501

1 Answers1

7

I asked the question on the SciPy Users List , answer 1:

I found the module for CWT quite confusing, so I rolled my own:

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

It is built for speed (I got my running time from 4 h down to 20 min). It is not thoroughly tested, and it is limited to single and double; but for me it is in a "good enough" state.

Answer 2:

You might also find my version useful:

https://github.com/aaren/wavelets

I also found scipy wavelets confusing. My version includes a faster cwt that can take wavelets expressed in either frequency or time.

I found it more intuitive to have wavelet functions that take time/frequency and width as arguments rather than the present method (I prefer thinking in real space rather than sample space).

Presently, the morlet wavelet that comes with scipy, scipy.signal.wavelets.morlet, cannot be used as input to cwt. This is unfortunate I think.

Additionally, the present cwt doesn't allow complex output. This doesn't make a difference for ricker but wavelet functions are complex in general.

My modified 'cwt' method is here:

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

It can accept wavelet functions defined in time or frequency space, uses fftconvolve, and allows complex output.

My background on this is based on a reading of Torrence and Compo:

Torrence and Compo, 'A Practical Guide to Wavelet Analysis' (BAMS, 1998)

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

hope that helps a bit,

aaron

Franck Dernoncourt
  • 77,520
  • 72
  • 342
  • 501