dtw_distance
描述
DTW(动态时间规整)是一种测量两个时间序列相似度的方法。 该算法计算两个可能长度不同、tempo不同的时间序列间的最优匹配。
函数签名
dtw_distance(s1, s2, radius, timeout_seconds) -> None
参数
s1
(array_like)
第一个时间序列
s2
(array_like)
第二个时间序列
radius
(int, optional)
Sakoe-Chiba半径,用于限制规整路径,可以提高计算效率。 如果不指定,则不使用路径限制。
timeout_seconds
(float, optional)
计算超时时间,单位为秒。如果函数执行时间超过此值,将抛出TimeoutError异常。 默认为None,表示无超时限制。
返回值
float 两个序列之间的DTW距离。值越小表示序列越相似。
异常:
TimeoutError 当计算时间超过timeout_seconds指定的秒数时抛出
Python调用示例: ```python import numpy as np from rust_pyfunc import dtw_distance
创建两个测试序列
s1 = [1.0, 2.0, 3.0, 4.0, 5.0] s2 = [1.0, 2.0, 2.5, 3.5, 4.0, 5.0]
计算完整DTW距离
dist1 = dtw_distance(s1, s2) print(f"DTW距离: {dist1}")
使用radius=1限制规整路径
dist2 = dtw_distance(s1, s2, radius=1) print(f"使用radius=1的DTW距离: {dist2}")
设置超时时间为1秒
try: dist3 = dtw_distance(s1, s2, timeout_seconds=1.0) print(f"DTW距离: {dist3}") except RuntimeError as e: print(f"超时错误: {e}") ```
示例
输入:
dtw_distance(
[1.0, 2.0, 3.0, 4.0],
[1.0, 2.0, 2.5, 3.0, 4.0]
)
输出:
0.5
输入:
dtw_distance(
[1.0, 2.0, 3.0, 4.0],
[4.0, 3.0, 2.0, 1.0]
)
输出:
8.0
输入:
dtw_distance(
[1.0, 2.0, 3.0, 4.0],
[1.0, 2.0, 3.0, 4.0],
1
)
输出:
0.0
Python使用示例
import numpy as np
from rust_pyfunc import dtw_distance
# 使用示例
result = dtw_distance([1.0, 2.0, 3.0, 4.0], [1.0, 2.0, 2.5, 3.0, 4.0])
print(f"结果: {result}")