メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

similarityDistance

クエリと時系列サブシーケンスの間の距離プロファイルを計算

R2024b 以降

説明

d = similarityDistance(x,y) は、クエリ シーケンス y と時系列 xy と同じ長さの各サブシーケンスとの間の z 正規化ユークリッド距離のベクトルを返します。

[d,i] = similarityDistance(x,y) は、y のクエリに最も一致するサブシーケンスの開始インデックスのベクトル i も返します。

[___] = similarityDistance(x,y,EndPoints=outputLengths) は、x がサブシーケンスの途中で終わっている場合に出力ベクトルの長さをどのように扱うかを指定します。

この構文は、前述の構文の入力引数および出力引数のいずれかと一緒に使用します。

すべて折りたたむ

T1 および T2 で構成されるデータを読み込みます。T1 は、劣化する DC モーターの電機子電流の測定値を含む timetable です。T2 は、既知の故障したモーターから収集されたデータを含む timetable です。

load matrix_profile_data T1 T2

xT1MotorCurrent 変数に設定します。x をサブプロットにプロットします。

x = T1.MotorCurrent;

subplot(211)
plot(x)
ylabel("Motor Current, mA")
hold on

Figure contains an axes object. The axes object with ylabel Motor Current, mA contains an object of type line.

T2 の位置 3000 から始まる長さが 100 のセグメントに異常状態のデータがあります。このデータをターゲット セグメント y として抽出します。

len = 100;
loc = 3000;
iy = loc:loc+len-1;
y = T2.MotorCurrent(iy);

x のモーター データ内のサブシーケンスに対するターゲット異常セグメント y の類似度距離を計算します。

[d,i] = similarityDistance(x,y);

i の最初の 3 つのインデックスを使用して、最も一致度の高い 3 つのサブシーケンスをプロットします。これらの一致は、y の異常に潜在的に類似した異常を示しています。

for k = 1:3
  id = i(k):i(k)+len-1;
  plot(id,x(id),"--");
  hold on
end
legend({"Time Series", "Match 1", "Match 2", "Match 3"})
hold off

Figure contains an axes object. The axes object with ylabel Motor Current, mA contains 4 objects of type line. These objects represent Time Series, Match 1, Match 2, Match 3.

比較のために、ターゲット異常シーケンスをプロットします。

subplot(212)
plot(y);
hold on
ylabel("Motor Current, mA")

Figure contains 2 axes objects. Axes object 1 with ylabel Motor Current, mA contains 4 objects of type line. These objects represent Time Series, Match 1, Match 2, Match 3. Axes object 2 with ylabel Motor Current, mA contains an object of type line.

3 つの一致するサブシーケンスのデータをターゲット異常と共にプロットします。

for k = 1:3
  id = i(k):i(k)+len-1;
  plot(x(id),"--");
  hold on
end
legend({"Target Anomaly", "Match 1", "Match 2", "Match 3"})
hold off

Figure contains 2 axes objects. Axes object 1 with ylabel Motor Current, mA contains 4 objects of type line. These objects represent Time Series, Match 1, Match 2, Match 3. Axes object 2 with ylabel Motor Current, mA contains 4 objects of type line. These objects represent Target Anomaly, Match 1, Match 2, Match 3.

一致するサブシーケンスがターゲット異常に類似しているように見えます。

入力引数

すべて折りたたむ

評価する時系列。長さ n の数値ベクトルとして指定します。x に欠損データがあってはなりません。

クエリ シーケンス。長さ m の数値ベクトルとして指定します。ここで、m は時系列 x の長さ n 以下です。y に欠損データがあってはなりません。

x がサブシーケンスの途中で終わっている場合の出力の長さを制御するオプション。次のオプションのいずれかとして指定します。

  • "discard" — 出力ベクトル d および i の長さを nm + 1 までで切り捨てます。ここで、nx の長さ、my の長さです。

  • "fill"dm – 1 個の NaN でパディングして d および i の長さを n まで拡張します。ベクトル i の最後の m – 1 個の要素がシーケンス xm + 2:n に設定されます。

出力引数

すべて折りたたむ

クエリ シーケンス y とサブシーケンス x(k:k+m-1) の間の z 正規化距離を含む距離ベクトル。ここで、k は 1 から n-m+1 までの間で変動します。長さ nm+1 の数値ベクトルとして返されます。

y に最も一致する d のサブシーケンスの開始インデックスのベクトル。d と同じサイズの正の整数ベクトルとして返されます。

i の要素は、d(i) の要素を距離の昇順で並べ替えたものになります。つまり、最も一致度の高い要素 (距離が最小) から最も一致度の低い要素 (距離が最大) の順に並べられます。したがって、最も一致度の高いものの開始位置が d(i(1))、最も一致度の低いものの開始位置が d(i(n-m-1)) になります。

参照

[1] Abdullah Mueen, Sheng Zhong, Yan Zhu, Michael Yeh, Kaveh Kamgar, Krishnamurthy Viswanathan, Chetan Kumar Gupta, and Eamonn Keogh, The Fastest Similarity Search Algorithm for Time Series Subsequences Under Euclidean Distance, 2022. https://www.cs.unm.edu/%7Emueen/FastestSimilaritySearch.html

拡張機能

すべて展開する

バージョン履歴

R2024b で導入