def goTest(): nt, ni = 981, 500 # number of time samples; number of impulses ffreq, fdecay = 0.08, 0.05 # peak frequency and decay for wavelet gfreq, gdecay = 0.08, 0.05 # peak frequency and decay for wavelet na, ka = 11, -5 # sampling for inverse wavelet A nb, kb = 11, -5 # sampling for inverse wavelet B nc, kc = 181, -90 # sampling for wavelet C nd, kd = 181, -90 # sampling for wavelet D dt, ft = 0.004, 0.000 # used for plotting only st = Sampling(nt, dt, ft) for mp in [False]: # True, for minimum-phase; False for mixed-phase ck = getWavelet(ffreq, fdecay, nc, kc, mp) # known wavelet C dk = getWavelet(gfreq, gdecay, nc, kc, mp) # known wavelet D normalizeMax(ck) normalizeMax(dk) #for r0,r1 in [(3.0,1.5),(2.0,2.0)]: # <1 for stretch; >1 for squeeze for r0, r1 in [(3.0, 1.5)]: # <1 for stretch; >1 for squeeze title = "r0 = " + str(r0) + " r1 = " + str(r1) u, p, q = logupq(r0, r1, nt, ni) f = addWavelet(ffreq, fdecay, p, mp) g = addWavelet(gfreq, fdecay, q, mp) ww = WaveletWarpingAH() ww.setTimeRange(0, nt / 2) ww.setStabilityFactor(0.0001) ww.setMaxIterations(40) #bw,cw = ww.getAHSimple(nb,kb,nc,kc,u,f,g); bw, cw = ww.getAHNewton(nb, kb, nc, kc, u, f, g) #bw,cw = ww.getAHGaussNewton(nb,kb,nc,kc,u,f,g); print "rmse =", ww.rms( sub(f, ww.applyHSA(nb, kb, bw, nc, kc, cw, u, g))) dump(bw) dw = ww.getWavelet(nd, kd, nb, kb, bw) sg = ww.warp(u, g) bg = ww.convolve(nb, kb, bw, g) sbg = ww.warp(u, bg) csbg = ww.convolve(nc, kc, cw, sbg) normalizeMax(cw) normalizeMax(dw) plotSequences(st, [f, g], labels=["f", "g"], title=title) plotSequences(st, [f, sg], labels=["f", "Sg"], title=title) plotSequences(st, [f, csbg], labels=["f", "CSBg"], title=title) plotWavelets(Sampling(nc, dt, kc * dt), [cw, ck], title=title + " C") plotWavelets(Sampling(nd, dt, kd * dt), [dw, dk], title=title + " D")
def goTest(): nt,ni = 981,500 # number of time samples; number of impulses ffreq,fdecay = 0.08,0.05 # peak frequency and decay for wavelet gfreq,gdecay = 0.08,0.05 # peak frequency and decay for wavelet na,ka = 11,-5 # sampling for inverse wavelet A nb,kb = 11,-5 # sampling for inverse wavelet B nc,kc = 181,-90 # sampling for wavelet C nd,kd = 181,-90 # sampling for wavelet D dt,ft = 0.004,0.000 # used for plotting only st = Sampling(nt,dt,ft) for mp in [False]: # True, for minimum-phase; False for mixed-phase ck = getWavelet(ffreq,fdecay,nc,kc,mp) # known wavelet C dk = getWavelet(gfreq,gdecay,nc,kc,mp) # known wavelet D normalizeMax(ck) normalizeMax(dk) #for r0,r1 in [(3.0,1.5),(2.0,2.0)]: # <1 for stretch; >1 for squeeze for r0,r1 in [(3.0,1.5)]: # <1 for stretch; >1 for squeeze title = "r0 = "+str(r0)+" r1 = "+str(r1) u,p,q = logupq(r0,r1,nt,ni) f = addWavelet(ffreq,fdecay,p,mp) g = addWavelet(gfreq,fdecay,q,mp) ww = WaveletWarpingAH() ww.setTimeRange(0,nt/2) ww.setStabilityFactor(0.0001) ww.setMaxIterations(40) #bw,cw = ww.getAHSimple(nb,kb,nc,kc,u,f,g); bw,cw = ww.getAHNewton(nb,kb,nc,kc,u,f,g); #bw,cw = ww.getAHGaussNewton(nb,kb,nc,kc,u,f,g); print "rmse =",ww.rms(sub(f,ww.applyHSA(nb,kb,bw,nc,kc,cw,u,g))) dump(bw); dw = ww.getWavelet(nd,kd,nb,kb,bw) sg = ww.warp(u,g) bg = ww.convolve(nb,kb,bw,g) sbg = ww.warp(u,bg) csbg = ww.convolve(nc,kc,cw,sbg) normalizeMax(cw) normalizeMax(dw) plotSequences(st,[f,g],labels=["f","g"],title=title) plotSequences(st,[f,sg],labels=["f","Sg"],title=title) plotSequences(st,[f,csbg],labels=["f","CSBg"],title=title) plotWavelets(Sampling(nc,dt,kc*dt),[cw,ck],title=title+" C") plotWavelets(Sampling(nd,dt,kd*dt),[dw,dk],title=title+" D")