I am trying to understand how to extend the idea of one dimensional dynamic time warping to the multidimensional case.

Lets assume I have a dataset with two dimensions where TrainA holds dimension 1 and TrainB holds dimension 2. It seems that the simplest case would be

distA = dtw(TrainA) 
distB = dtw(TrainB) 
dist = distA + distB  // or maybe distA*distB

Is this the right approach? I know there are packages that do this for you but I want to understand what is actually being done.


There are two ways to do it. The way you describe is DTWI, but other way, DTWD can be better, because it pools the information before warping.

There is an explanation of the differences, and an empirical study here. http://www.cs.ucr.edu/~eamonn/Multi-Dimensional_DTW_Journal.pdf

  • 2
    $\begingroup$ Thank you for the link to the great paper! Do you know if any code exists that will extend the UCR suite (cs.ucr.edu/~eamonn/UCRsuite.html) to allow for DTWD? In case this is Professor Eamonn, I love your work! $\endgroup$ – mike1886 Jul 31 '15 at 13:19
  • 1
    $\begingroup$ @mike1886 this is somewhat a separate question, but it should be noted that the code for the linked paper is available sites.google.com/site/dtwadaptive/home $\endgroup$ – Seanny123 Nov 8 '18 at 19:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.