Skip to main content

A simple implementation of DTW(Dynamic Time Warping) in C#/python

DTW(Dynamic Time Warping) is a very useful tools for time series analysis. This is a very simple (but not very efficient) c# implementation of DTW, the source code is available at https://gist.github.com/1966342 .

Use the program as below:
double[] x = {9,3,1,5,1,2,0,1,0,2,2,8,1,7,0,6,4,4,5};
double[] y = {1,0,5,5,0,1,0,1,0,3,3,2,8,1,0,6,4,4,5};
SimpleDTW dtw = new SimpleDTW(x,y);
dtw.calculateDTW();

The python implementation is available at https://gist.github.com/3265694 .

from python-dtw import Dtw
import math
dtw = Dtw([1, 2, 3, 4, 6], [1, 2, 3, 5],
          distance_func=lambda x, y: math.fabs(x - y))
print dtw.calculate() #calculate the distance
print dtw.get_path() #calculate the mapping path

Comments

Xxx said…
I was about to write it by my self. Thanks a lot for that :). Great job.
Unknown said…
Please i want to ask is this program is made on consle app or windows form app

and please i want to ask about the lines written below about the program where can i write them

thanks and please help me because i'm a beginner

and i need this code urgently
thanks
AliBaba said…
hi blogger, I want to know about the computation of this DTW algorithm, in your example you have mentioned calculateDTW but in project there isnt any such function .. secondly U have made 2 more functions in it as Backward and forward, what are these for ... please give us a complete details how to use the code .. regards...
Ruki said…
great help. thank you!
CardStop said…
Would it be possible to update the download link? Thank you in advance.
Darjan said…
Thanks for the code, it saved me some time when I required a simple implementation for some POC software.

Later on I have written something more powerful - if anyone is interested, here is the code: https://github.com/doblak/ndtw
Unknown said…
A simple implementation of DTW(Dynamic Time Warping) in C#/python is really a useful Tool for time analysis. Check DTW Airport Taxi services.
greennn said…
Great job, it is very helpful for myself and thanks for given This DTW code. This implementation is very effective about DTW at it all.
dtw airport taxi
Richard Scott said…
i want to know this code work for Mobile Apps or not and i need for Mobile App i am Living in Detroit Working For DTW Metro Airport To provide Detroit Metro Airport Cars Services
Unknown said…
Good work,Really it is very helpful code for everyone.Detroit Airport Taxi
Unknown said…
This code is very helpful Detroit Airport Taxi
Unknown said…
great piece of information. the post regarding the subject i really informative for the tattoo lovers and the great thing about this is that material use for it is made of organic. keep sharing such kind of informative posts. london gatwick airport parking
Unknown said…
sorry to say but not understand this post can some one explain it for me A simple implementation of DTW(Dynamic Time Warping) in C#/python ? Taxi for Detroit Airport
Unknown said…
Thanks for such a nice and unique content with many tips and ideas for taxi and cab solution. Please Visit:

Detroit Metro Airport Taxi
Metro Airport Taxi Car Services

Popular posts from this blog

Install mysql-python with mariadb

mysql-python requires libmysqlclient-dev in ubuntu, but the installation of mariadb will have the lib with unmet dependenccies, so the error of "mysql_config not found" may occurred if you install mysql-python via pip. The case is that mariadb has a compatible package, if you have the ppa setup as in  http://downloads.mariadb.org/ . Just "sudo apt-get install libmariadbclient-dev".

The default CREATE TABLE options for Aria Engine in mariadb

The official document of mariadb does not mention the default CREATE TABLE options for tables using Aria Engine.  The default options are list as below: TRANSACTIONAL,  the default value is TRANSACTIONAL=0, i.e., non-transactional. ROW_FORMAT, the default value is ROW_FORMAT=PAGE, which may suits both transactional and non-transactional tables. PAGE_CHECKSUM,  the default value will follow aria_page_checksum system variable, which has default value ON. For the TRANSACTIONAL option, you may consider create a table as below(and ALTER the TRANSACTIONAL=1): CREATE TABLE `test_table` ( `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ) ENGINE=Aria; If you change the ROW_FORMAT to DYNAMIC or FIXED, everything just goes fine. But if you have ALTER the table with TRANSACTION=1 and change the ROW_FORMAT to DYNAMIC or FIXED, you may got a warning: SHOW WARNINGS; +-------+------+----------------------------------------------------------+ | Level | Code | Message | +-------+--