# warp: Apply a warping to a given timeseries In dtw: Dynamic Time Warping Algorithms

## Description

Returns the indexing required to apply the optimal warping curve to a given timeseries (warps either into a query or into a reference).

## Usage

 `1` ```warp(d, index.reference = FALSE) ```

## Arguments

 `d` `dtw` object specifying the warping curve to apply `index.reference` `TRUE` to warp a reference, `FALSE` to warp a query

## Details

The warping is returned as a set of indices, which can be used to subscript the timeseries to be warped (or rows in a matrix, if one wants to warp a multivariate time series). In other words, `warp` converts the warping curve, or its inverse, into a function in the explicit form.

Multiple indices that would be mapped to a single point are averaged, with a warning. Gaps in the index sequence are filled by linear interpolation.

## Value

A list of indices to subscript the timeseries.

## Author(s)

Toni Giorgino

Examples in `dtw()` show how to graphically apply the warping via parametric plots.
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36``` ```idx<-seq(0,6.28,len=100); query<-sin(idx)+runif(100)/10; reference<-cos(idx) alignment<-dtw(query,reference); wq<-warp(alignment,index.reference=FALSE); wt<-warp(alignment,index.reference=TRUE); old.par <- par(no.readonly = TRUE); par(mfrow=c(2,1)); plot(reference,main="Warping query"); lines(query[wq],col="blue"); plot(query,type="l",col="blue", main="Warping reference"); points(reference[wt]); par(old.par); ############## ## ## Asymmetric step makes it "natural" to warp ## the reference, because every query index has ## exactly one image (q->t is a function) ## alignment<-dtw(query,reference,step=asymmetric) wt<-warp(alignment,index.reference=TRUE); plot(query,type="l",col="blue", main="Warping reference, asymmetric step"); points(reference[wt]); ```