https://github.com/cjekel/dtw_cpp
Dynamic Time Warping single header library for C++
https://github.com/cjekel/dtw_cpp
cpp11 dtw dynamic-time-warping similarity-measures single-header
Last synced: 6 months ago
JSON representation
Dynamic Time Warping single header library for C++
- Host: GitHub
- URL: https://github.com/cjekel/dtw_cpp
- Owner: cjekel
- License: mit
- Created: 2019-08-15T16:47:11.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2021-02-28T22:15:31.000Z (over 4 years ago)
- Last Synced: 2025-03-28T17:48:01.047Z (6 months ago)
- Topics: cpp11, dtw, dynamic-time-warping, similarity-measures, single-header
- Language: C++
- Homepage:
- Size: 51.8 KB
- Stars: 49
- Watchers: 1
- Forks: 14
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# DTW_cpp
A small Dynamic Time Warping (DTW) single header library for C++[DTW.hpp](https://github.com/cjekel/DTW_cpp/blob/master/include/DTW.hpp) computes the DTW distance between two c++ vectors ```a``` and ```b```!
[](https://travis-ci.com/cjekel/DTW_cpp) [](https://coveralls.io/github/cjekel/DTW_cpp?branch=master)
# Features
- Supports N-Dimensional data
- ```a``` and ```b```can have different number of data points
- Compute the distance using any ```p```-norm
- ```DTW::dtw_distance_only(a, b, p);``` function which returns only the DTW distance
- ```DTW::DTW MyDtw (a, b, p);``` class contains the pairwise distance vector, DTW distance vector, DTW distance, and a function to calculate the DTW alignment path# What is Dynamic Time Warping ?
Dynamic Time Warping (DTW) is an algorithm to measure the similarity between two temporal curves. The wiki page on [DTW](https://en.wikipedia.org/wiki/Dynamic_time_warping) is a great place to learn more.

Consider the above Numerical and Experimental curves in 2D space. DTW can be used to measure the similarity between the two curves. A DTW distance of zero would mean that the warped curves match exactly.
The order of data points matters. Each curve is a sequence of data points, with a known beginning and ending.
# Examples
Check out the two [examples](https://github.com/cjekel/DTW_cpp/tree/master/examples).
# Tests
Run [run_tests.sh](https://github.com/cjekel/DTW_cpp/blob/master/run_tests.sh) in a linux environment.
- travisci tests using Ubuntu Xenial and g++ version 5.4.0
- also tested on openSUSE Leap 15.1 and g++ version 7.4.0# Requirements
- C++11 standard or later