동적 시간 왜곡(DTW) 거리 계산기
길이가 다르거나 속도가 어긋난 두 수열의 거리를 재고 어느 점끼리 대응됐는지 보여줍니다. 같은 자리끼리만 견주는 거리와 나란히 놓아, 시간이 밀린 신호에서 왜 값이 크게 갈리는지 확인할 수 있습니다.
공백이나 쉼표로 나눠 적습니다. 200개까지.
0이면 제약 없음. 대응을 대각선에서 이 칸 안으로 묶습니다.
DTW 거리
1
같은 자리끼리만 견주면 8입니다. 차이가 곧 「늘였다 줄여서 얻은 것」입니다.
누적 비용 표와 대응 경로
| A \ B | 0 | 0 | 1 | 2 | 3 | 4 | 3 | 2 | 1 |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 1 | 3 | 6 | 10 | 13 | 15 | 16 |
| 1 | 1 | 1 | 0 | 1 | 3 | 6 | 8 | 9 | 9 |
| 2 | 3 | 3 | 1 | 0 | 1 | 3 | 4 | 4 | 5 |
| 3 | 6 | 6 | 3 | 1 | 0 | 1 | 1 | 2 | 4 |
| 4 | 10 | 10 | 6 | 3 | 1 | 0 | 1 | 3 | 5 |
| 3 | 13 | 13 | 8 | 4 | 1 | 1 | 0 | 1 | 3 |
| 2 | 15 | 15 | 9 | 4 | 2 | 3 | 1 | 0 | 1 |
| 1 | 16 | 16 | 9 | 5 | 4 | 5 | 3 | 1 | 0 |
| 0 | 16 | 16 | 10 | 7 | 7 | 8 | 6 | 3 | 1 |
각 칸은 「거기까지 오는 데 든 최소 비용」입니다. D[i][j] = |A[i] − B[j]| + min(위, 왼쪽, 대각선)이고 오른쪽 아래 칸이 답입니다. 파란 칸이 그 답을 만든 대응 경로이며, 가로로 이어지면 A의 한 점이 B의 여러 점에 대응된 것입니다.
대응
A0↔B0 A0↔B1 A1↔B2 A2↔B3 A3↔B4 A4↔B5 A5↔B6 A6↔B7 A7↔B8 A8↔B8
사용 방법
- 1두 수열을 공백이나 쉼표로 나눠 적습니다.
- 2DTW 거리와 같은 자리끼리 견준 거리를 견줍니다.
- 3표에서 어느 점끼리 대응됐는지 확인합니다.
- 4밴드 폭을 좁혀 대응을 대각선 가까이로 묶어 봅니다.
- 5한쪽 수열을 한두 칸 밀어 넣어 두 거리가 어떻게 갈리는지 봅니다.
자주 묻는 질문
길이가 다르거나 속도가 어긋난 두 수열을 늘였다 줄여서 맞춘 뒤 거리를 재는 방법입니다. 같은 자리끼리만 견주는 거리와 달리 한 점을 여러 점에 대응시킬 수 있어서, 「모양이 같은가」를 재는 데 훨씬 가깝습니다. 음성 인식과 몸짓 인식에서 오래 쓰였습니다.
유클리드 거리는 i번째끼리만 견주므로 길이가 같아야 하고, 모양이 같아도 시간이 한 칸 밀리면 값이 크게 벌어집니다. DTW는 대응을 자유롭게 고를 수 있어 밀린 만큼을 흡수합니다. 이 도구의 기본 예제에서 같은 자리끼리 견주면 8, DTW로는 1이 나옵니다.
표를 채웁니다. D[i][j] = |a[i] − b[j]| + min(위, 왼쪽, 대각선)이고, 오른쪽 아래 칸이 답입니다. 편집거리 표와 닮았지만 「건너뜀」이 없다는 점이 다릅니다. DTW에서는 모든 점이 반드시 적어도 한 번은 짝지어집니다 — 시간을 늘이거나 줄일 뿐 버리지는 않습니다.
아닙니다. 삼각부등식을 만족하지 않아서, d(A,C)가 d(A,B) + d(B,C)보다 큰 짝이 실제로 있습니다. 그래서 거리 공간을 전제로 하는 색인 구조나 군집화 알고리즘을 그대로 가져다 쓸 수 없습니다. 「거리」라는 이름이 붙었지만 성질은 다릅니다.
대응을 대각선에서 일정 칸 안으로 묶는 제약입니다. 계산이 줄기도 하지만 그보다도 엉뚱하게 먼 대응을 막는 것이 목적입니다. 밴드를 좁히면 선택지가 줄어 거리가 커지거나 같아지고, 밴드가 0이면 같은 자리끼리만 견주는 것과 같아집니다.
표를 채우는 모양은 닮았지만 다루는 것이 다릅니다. 편집거리는 글자를 넣거나 지울 수 있고 그 횟수를 셉니다. DTW는 값의 차이를 더하고, 어떤 점도 버리지 않습니다. 편집거리는 「몇 번 고쳐야 같아지나」이고 DTW는 「늘였다 줄이면 얼마나 닮았나」입니다.
전송되지 않습니다. 계산은 모두 브라우저 안에서 이뤄지고, 입력한 수열은 이 기기에만 남습니다.
알아두면 좋은 점
- 정답지는 무식한 방법입니다. 가능한 모든 대응 경로를 훑어 가장 싼 것을 찾은 값과, 표를 채워 얻은 값이 400가지 짝에서 모두 같은 것을 확인했습니다. 원리가 겹치지 않는 두 방법이라 서로를 검산합니다.
- 경로 자체도 검사합니다. (0,0)에서 시작해 끝 칸까지 이어지는지, 한 걸음이 오른쪽·아래·대각선 중 하나인지, 경로의 비용을 더하면 거리와 같은지, 모든 점이 적어도 한 번은 짝지어지는지를 봅니다.
- 같은 수열끼리는 0이고 dtw(a,b) = dtw(b,a)인 것도 300가지 짝에서 확인했습니다.
- 삼각부등식을 만족하지 않는다는 것을 말로만 적지 않고 반례를 박아 두었습니다. A = [0,0,2], B = [7,2,0], C = [8,8,0]에서 d(A,C) = 18인데 d(A,B) + d(B,C) = 15입니다.
- 밴드를 좁히면 거리가 커지거나 같은 것, 밴드가 0이면 같은 자리끼리 견준 값과 같아지는 것을 검사합니다.
- 길이 차이보다 좁은 밴드는 길이 차이만큼으로 자동으로 넓힙니다. 그러지 않으면 두 수열을 아예 이을 수 없어 무한이 됩니다.
- 거리는 값의 차이를 절댓값으로 더한 것입니다. 제곱 합을 쓰는 구현도 있으므로 다른 도구와 값을 견줄 때 어느 잣대인지 확인해야 합니다.
- 수열은 각각 200개까지 다룹니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 1일 · 결과는 참고용 추정치입니다.