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.


1 Answer 1


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

  • 3
    $\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
    Commented Jul 31, 2015 at 13:19
  • 2
    $\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
    Commented Nov 8, 2018 at 19:20
  • $\begingroup$ Why is pooling information before warping better? $\endgroup$
    – Galen
    Commented Aug 29, 2022 at 13:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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