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.