def goDTW1(n1,n2,f0,dt,rmsNoise,maxStrain,g,f): vrmin = 0.001# minimum velocity ratio v*/v (>=0.5) vrmax = 2.00 # maximum velocity ratio v*/v (<infinity) dvrmin = 0.001# minimum change of velocity (>=0.0) dvrmax = 2.00 # maximum change of velocity (<=2.0) dvr = 0.50 # percent velocity change fr,ds,kmin,kmax,jmin,jmax = paramDTW(vrmin,vrmax,dvrmin,dvrmax,dvr) nl = 1+fr*(n2-n1) dst = dt/fr sf = Sampling(n1,dt,0.0) sg = Sampling(n2,dt,0.0) #guess g0 sl = Sampling(nl,dst,0.0) #jmin,jmax = 0,0 #kmin,kmax = 0,0 sw = Stopwatch() dw = DynamicWarpingWT(nl,fr,kmin,kmax,jmin,jmax) sw.start() e = dw.computeErrors(f,g) d = dw.accumulate(e) u = dw.findShifts(d) #u = dw.findShiftsFast(f,g) sw.stop() print 'dtw done at '+str(sw.time())+' seconds' h = dw.applyShifts(u,f) u = mul(u,dt) sh = Sampling(len(h),dt,u[0])
def goDTW3(): # errors nt = 501 ns = 101 lw = 1 uo = 20 bg = 10 #e = makeErrorTest1(nt,ns,uo,bg,lw) e = makeErrorTest2(nt,ns,uo,bg,5,0) st = Sampling(nt,1,0) ss = Sampling(ns,1,0) # warping rmax = 1.5 rmin = -1.5 dw = DynamicWarpingWT(ns,1) for ir in range(3): dr = 0.01*pow(10,ir) nr = int(floor((rmax-rmin)/dr)) + 1 sr = Sampling(nr,dr,rmin) u = dw.findShiftsX(e,sr,uo) #es = esum(e,u) print 'dr= ',dr print 'nr= ',nr #print 'esum= ',es,'\n' plotMatrix(etran(e),st,ss,u=u,title='dr= '+str(dr)+', rmin='+str(rmin)+', rmax='+str(rmax),haxis="time samples",vaxis="shift samples")#,slides='etest'+str(ir+1)) # plotting plotMatrix(etran(e),st,ss,haxis="time samples",vaxis="shift samples",title="errors")#,slides='etest0')
def goDTWR(nf,ng,f0,f,g): nl = ng-nf+1 dr = 0.5 dt = 0.01 dst = dt sf = Sampling(nf,dt,0.0) sg = Sampling(ng,dt,0.0) #guess g0 sl = Sampling(nl,dt,0.0) rmin = -1.0 rmax = 1.0 print 'kmax=',int(ceil(rmax/dr)) print 'kmin=',int(floor(rmin/dr)) dw = DynamicWarpingWT(nl,rmin,rmax,dr) e = dw.computeErrors(f,g) u = dw.findShiftsR(e) h = dw.applyShifts(u,f) u = mul(u,dt) sh = Sampling(len(h),dt,u[0]) plotu(u) plotSequences(g,f,sg,sf) plotSequences(g,h,sg,sh) plotMatrix(etran(e),sf,sl) plotMatrix(etran(e),sf,sl,u=u)
def goDTW2(n1,n2,f0,dt,rmsNoise,maxStrain,g,f): #for uo fr = 2 kmin = -2 kmax = 2 rmin = -1.5 rmax = 1.5 nl = 1+fr*(n2-n1) dst = dt/fr sf = Sampling(n1,dt,0.0) sl = Sampling(nl,dst,0.0) dw = DynamicWarpingWT(nl,fr,kmin,kmax) uoi,udmin = dw.finduo(f,g) uo = uoi[0] #uo = 350 print 'uo= ',uo,'\n' e = dw.computeErrors(f,g) d = dw.accumulate(e) for ir in range(4): dr = 0.001*pow(10,ir) nr = int(floor((rmax-rmin)/dr)) + 1 sr = Sampling(nr,dr,rmin) u = dw.findShiftsX(e,sr,uo) u = mul(u,dt) dmin = dw.findShiftsX(e,sr,uo,True) print 'dr= ',dr print 'nr= ',nr print 'esum= ',dmin[0],'\n' #plotMatrix(etran(d),sf,sl) plotMatrix(etran(d),sf,sl,u=u,title='dr= '+str(dr))