예제 #1
0
파일: dtw1.py 프로젝트: xian-ran/mines
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])
예제 #2
0
파일: dtw1.py 프로젝트: xian-ran/mines
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))