CanonicalWarpingDistance[s1,s2]
列 s1と s2の間の正準タイムワーピング(CTW)距離を与える.
CanonicalWarpingDistance[s1,s2,init]
2つの列間の初期対応として init を使う.
CanonicalWarpingDistance[s1,s2,init,win]
局所探索に窓 win を使う.
CanonicalWarpingDistance
CanonicalWarpingDistance[s1,s2]
列 s1と s2の間の正準タイムワーピング(CTW)距離を与える.
CanonicalWarpingDistance[s1,s2,init]
2つの列間の初期対応として init を使う.
CanonicalWarpingDistance[s1,s2,init,win]
局所探索に窓 win を使う.
詳細とオプション
- 正準タイムワーピングは,参照列 s1とクエリ列 s2 に対して空間変換と動的タイムワーピングを反復的に行い,列間の最短距離でのアラインメントを求める.
- 列 siは,数値スカラーまたは数値ベクトルのリストでよい.動的タイムワーピングとは異なり,s1と s2の要素の次元は違ってもよい.
- 距離は
で与えられる.ただし,s1〚ni〛と s2〚mi〛は対応する要素であり,α と β は正準相関分析を使って計算された空間変換行列である. - 計算された距離を与えるこの対応は,CanonicalWarpingCorrespondenceを使って求めることができる.
- 初期対応 init は{{n1,…,nk},{m1,…,mk}}の形式で与えられ,s1と s2の要素間の初期1対1対応を与える.
- 探索窓 win の可能な設定
-

Automatic 完全探索 
r 半径
の斜め帯窓
{"SlantedBand",r} 半径
の斜め帯窓
{"Band",r} 半径
の帯窓 (Sakoe-Chiba)
{"Parallelogram",a} 傾斜
と
で原点に置かれた平行四辺形窓(板倉) - サポートされるオプション
-
DistanceFunction Automatic 動的タイムワーピングに使われる距離関数 MaxIterations Automatic 反復の最大回数 Method Automatic 使用する正準タイムワーピングの異形 - DistanceFunctionの使用可能な設定については,WarpingDistanceの関数ページを参照のこと.
- Method->opts を介して次のオプションが使用可能である.
-
"DimensionsToKeep" Automatic 投影後の次元 "EnergyThreshold" Automatic 保存する「エネルギー」の割合 "Lambdas" Automatic 正則化の値 "MatchingIntervals" Automatic クエリを参照の全体とマッチするか,一部とマッチするか - "MatchingIntervals"オプションの可能な設定
-
Automatic 完全なマッチ "Flexible" 両端で柔軟 "FlexibleEnd" 区間の終端でのみ柔軟
例題
すべて開く すべて閉じる例 (2)
スコープ (9)
データ (6)
CanonicalWarpingDistance[{1, 1, 1, 2, 2, 3, 4}, {11, 13, 17, 19}]CanonicalWarpingDistance[{{0, 0}, {1, 0}, {1, 1}}, {{-1, -2}, {1, 2}, {0, 0}}]CanonicalWarpingDistance[{1, 1, 1, 2, 2, 3, 4}, {{-1, -2, -3}, {1, 2, 3}, {0, 0, 0}}]s1 = QuantityArray[{1, 2.5, 4}, "Decimeters"];
s2 = {Quantity[0.1, "Kilometers"], Quantity[200, "Inches"]};CanonicalWarpingDistance[s1, s2]CanonicalWarpingDistance[s1, s2] == CanonicalWarpingDistance[UnitConvert[s1], UnitConvert[s2]]s1 = QuantityArray[{{1, 2.5}, {4, 5}, {5, 4}}, {"Seconds", "Minutes"}]s2 = Table[Quantity[(i + j) / 60, "Hours"], {i, 5}, {j, 2}]CanonicalWarpingDistance[s1, s2]squant = QuantityArray[{1, 2.5, 4, 5}, "Kilometers"];
sscal = {500, 400, 300};CanonicalWarpingDistance[squant, sscal]CanonicalWarpingDistance[squant, QuantityArray[sscal, "meters"]]% == %%初期ワーピング (1)
デフォルトで,より短い列がより長い列の長さにマッチするように最初に一様にワープされる:
s1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
s2 = {1, 1, 1, 1, 1, 2, 3, 7, 8, 9, 10};CanonicalWarpingDistance[s1, s2]CanonicalWarpingDistance[s1, s2, {Range[Length[s1]], ArrayResample[Range[Length[s2]], Length[s1], Resampling -> "NearestLeft"]}]探索窓 (2)
s1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
s2 = {1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};CanonicalWarpingDistance[s1, s2]s1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
s2 = {1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};CanonicalWarpingDistance[s1, s2, Automatic, {"SlantedBand", 1}]オプション (2)
MaxIterations (2)
s1 = Table[{7t * Cos[1.8t], 3t * Sin[1.8t]}, {t, Range[0, 4Pi, 4Pi / 650]}];
s2 = Table[{5t * Cos[t], -3t * Sin[t]}, {t, Range[0, 6Pi, 6Pi / 500]}];
Graphics[{{Red, Point[s1]}, {Blue, Point[s2]}}]AbsoluteTiming[CanonicalWarpingDistance[s1, s2]]AbsoluteTiming[CanonicalWarpingDistance[s1, s2, MaxIterations -> 20]]最大反復回数を増やすと正準タイムワーピングが収束する場合はいつでも距離が短くなる:
AbsoluteTiming[CanonicalWarpingDistance[s1, s2, MaxIterations -> 100]]MaxIterations∞として収束後の距離を求める.正準タイムワーピングは収束しないこともある:
s1 = Table[{7t * Cos[1.8t], 3t * Sin[1.8t]}, {t, Range[0, 4Pi, 4Pi / 650]}];
s2 = Table[{5t * Cos[t], -3t * Sin[t]}, {t, Range[0, 6Pi, 6Pi / 500]}];CanonicalWarpingDistance[Take[s1, 450], s2, MaxIterations -> Infinity]アプリケーション (1)
borders = <|# -> ArrayResample[CountryData[#, "Polygon"][[1, 1, 1]], 200]& /@ {"USA", "Poland", "Portugal", "Vietnam", "Brazil", "Finland"}|>;dm = DistanceMatrix[Values[borders], DistanceFunction -> (Chop[CanonicalWarpingDistance[##, MaxIterations -> 6]]&)];nameTicks = {Range[6], Rotate[#, π / 4]& /@ Keys[borders]};
shapeTicks = {Range[6], Graphics[CountryData[#, "Shape"][[1]], ImageSize -> {50, 50}]& /@ Keys[borders]};MatrixPlot[dm, FrameTicks -> {{shapeTicks, None}, {nameTicks, None}}, Mesh -> True, PlotLegends -> Automatic, PlotLabel -> "Distance based on country shape", ImageSize -> Medium]特性と関係 (1)
s1 = Table[{Cos[0.6t] * Cos[t], Cos[0.6t] * Sin[t]}, {t, 0, 6Pi, 2Pi / 100}];
s2 = TranslationTransform[{2, 2}] /@ s1;ListLinePlot[{s1, s2}]CanonicalWarpingDistance[s1, s2]s1 = Table[{2Cos[t], Sin[t]}, {t, 0, 2Pi, 2Pi / 20}];
s2 = 3s1;
ListLinePlot[{s1, s2}]CanonicalWarpingDistance[s1, s2]s1 = Table[{Cos[3t] * Cos[t], Cos[3t] * Sin[t]}, {t, 0, 2Pi, 2Pi / 100}];
s2 = RotationTransform[Pi] /@ s1;ListLinePlot[{s1, s2}]CanonicalWarpingDistance[s1, s2]関連するガイド
テキスト
Wolfram Research (2016), CanonicalWarpingDistance, Wolfram言語関数, https://reference.wolfram.com/language/ref/CanonicalWarpingDistance.html.
CMS
Wolfram Language. 2016. "CanonicalWarpingDistance." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/CanonicalWarpingDistance.html.
APA
Wolfram Language. (2016). CanonicalWarpingDistance. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/CanonicalWarpingDistance.html
BibTeX
@misc{reference.wolfram_2026_canonicalwarpingdistance, author="Wolfram Research", title="{CanonicalWarpingDistance}", year="2016", howpublished="\url{https://reference.wolfram.com/language/ref/CanonicalWarpingDistance.html}", note=[Accessed: 16-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_canonicalwarpingdistance, organization={Wolfram Research}, title={CanonicalWarpingDistance}, year={2016}, url={https://reference.wolfram.com/language/ref/CanonicalWarpingDistance.html}, note=[Accessed: 16-August-2026]}