Wavelet

From SPEDAS Wiki
Revision as of 17:49, 3 May 2020 by Nikos (talk | contribs)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Compare IDL code to python code for the wavelet transformation of a simple wave function.

IDL code: SPEDAS

The SPEDAS IDL code uses Complex Morlet wavelets internally, and computes the resulting power.

  t =  FINDGEN(4000)
  time = time_double('2010-01-01') + 10*t  
  data = sin(2*!pi*t/32.) 
  data2 = sin(2*!pi*t/64.)
  data[1000:3000] = data2[1000:3000]  
  
  var = 'sin_wav'
  store_data, var, data={x:time, y:data}

  pvar = 'sin_wav_wv_pow'
  wav_data, var 
  tplot, [var, pvar]

IDL spectrogram example


Python code: pySPEDAS

Similar code in python uses the pywavelets library. This example uses the Complex Morlet wavelets.

import numpy as np
import pytplot
import pyspedas
from pyspedas.analysis.wavelet import wavelet

t = np.arange(4000.)
y = np.sin(2*np.pi*t/32.) 
y2 = np.sin(2*np.pi*t/64.) 
y[1000:3000] = y2[1000:3000]

var = 'sin_wav'
time = pyspedas.time_float('2010-01-01') + 10*t

pytplot.store_data(var, data={'x':time, 'y':y})

# Complex Morlet wavelets transformation
powervar = wavelet(var, wavename='cmorl0.5-1.0')
pvar = powervar[0]

pytplot.tplot_names()

pytplot.options(pvar, 'colormap', 'jet')
pytplot.ylim(pvar, 0.001, 0.1)
pytplot.options(pvar, 'ylog', True)
pytplot.options(pvar, 'ytitle', pvar)
pytplot.tplot([var, pvar])

pyspedas spectrogram example

With a small change, we can use a different wavelet, for example the Gaussian Derivative wavelet.

import numpy as np
import pytplot
import pyspedas
from pyspedas.analysis.wavelet import wavelet

t = np.arange(4000.)
y = np.sin(2*np.pi*t/32.) 
y2 = np.sin(2*np.pi*t/64.) 
y[1000:3000] = y2[1000:3000]

var = 'sin_wav'
time = pyspedas.time_float('2010-01-01') + 10*t

pytplot.store_data(var, data={'x':time, 'y':y})

# Gaussian Derivative wavelets transformation
powervar = wavelet(var, wavename='gaus1')
pvar = powervar[0]

pytplot.tplot_names()

pytplot.options(pvar, 'colormap', 'jet')
pytplot.ylim(pvar, 0.001, 0.1)
pytplot.options(pvar, 'ylog', True)
pytplot.options(pvar, 'ytitle', pvar)
pytplot.tplot([var, pvar])

pyspedas spectrogram example