Beispiel #1
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')
Beispiel #2
0
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)
Beispiel #3
0
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])
Beispiel #4
0
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))