Windowing functions can be passed to the
window.type argument in dtw to put a global
constraint to the warping paths allowed. They take two integer
arguments (plus optional parameters) and must return a boolean value
TRUE if the coordinates fall within the allowed region
for warping paths, FALSE otherwise.
User-defined functions can read variables reference.size,
query.size and window.size; these are pre-set upon
invocation. Some functions require additional parameters which must
be set (e.g. window.size). User-defined functions are free to
implement any window shape, as long as at least one path is allowed
between the initial and final alignment points, i.e., they are
compatible with the DTW constraints.
The sakoeChibaWindow function implements the Sakoe-Chiba band,
i.e. window.size elements around the main diagonal. If
the window size is too small, i.e. if
reference.size-query.size > window.size, warping
becomes impossible.
An itakuraWindow global constraint is still provided with this
package. See example below for a demonstration of
the difference between a local the two.
The slantedBandWindow (package-specific) is a band centered
around the (jagged) line segment which joins element [1,1] to
element [query.size,reference.size], and will be
window.size columns wide. In other words, the "diagonal" goes
from one corner to the other of the possibly rectangular cost matrix,
therefore having a slope of M/N, not 1.
dtwWindow.plot visualizes a windowing function. By default
it plots a 200 x 220 rectangular region, which can
be changed via reference.size and query.size arguments.