DMelt:DSP/4 Wavelets
From HandWiki
Member
Wavelets
Wavelets are mathematical functions that decompose data into different frequency components and then study each component with a resolution matched to its scale. A good introduction to wavelets is given Wavelet article. Below we show how to use wavelets using the "jsci" package which is incorporated into the the core of the DataMelt package.
In this example we will create a 1D vector of Gaussian numbers and transform using Fast Wavelet Transform (daubechies 2). We convert the input array into a histogram for visualization. Then we extract coefficients and convert the signal back. Then we compare the original data with the converted ones.
from jhplot import * from java.util import Random from java.awt import Color c1 = HPlot("Canvas",600,400) c1.setNameX("X") c1.setNameY("Y") c1.visible(1) c1.setAutoRange() p1 = P0D("Input data") rand = Random() for i in range(100): x=10*rand.nextGaussian() p1.add(x) print p1.toString() h1=p1.getH1D(50,-10,10) c1.draw(h1) ######### do wavelets from jsci.maths import * from jsci.maths.wavelet import * from jsci.maths.wavelet.daubechies2 import * ondelette = Daubechies2() signal =Signal(p1.getArray()) signal.setFilter(ondelette) # transform level = 1 # for some level int sCoef = signal.fwt(level) # get coefficients from Fast Wavelet Transform p2=P0D("Coefs0",sCoef.getCoefs()[0]) p3=P0D("Coefs1",sCoef.getCoefs()[1]) signalBack=P0D("Signal back", sCoef.rebuildSignal(ondelette).evaluate(0)) h3=signalBack.getH1D(50,-10,10) # get the signal back h3.setColor(Color.red) c1.draw(h3)
You will see 2 identical histograms. Please refer the package jsci.maths.wavelet.