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}")