0

这是我想做的事情:

  • 保持参考曲线不变(仅移动和拉伸查询曲线)
  • 限制重复的元素数量
  • 保持开始和结束都打开

我试过了:

dtw(ref_curve,query_curve,step_pattern=asymmetric,open_end=True,open_begin=True)

但我无法限制查询曲线的拉伸方式

dtw(ref_curve,query_curve,step_pattern=mvmStepPattern(10))

它对曲线没有任何作用!

dtw(ref_curve,query_curve,step_pattern=rabinerJuangStepPattern(4, "c"),open_end=True, open_begin=True)

我最喜欢这个,但在某些情况下,它使查询曲线的移动超出了需要......

我阅读了论文(https://www.jstatsoft.org/article/view/v031i07)和 API,但仍然不太明白如何实现我想要的。还有其他限制重复元素数量的选项吗?我会很感激你的帮助!

4

1 回答 1

0

澄清一下:我们正在讨论 DTW 套件包在dynamictimewarping.github.io提供的功能。这个问题实际上与语言无关(并且可能更适合交叉验证的堆栈交换)。

rabinerJuangStepPattern(4, "c")您找到的模式实际上确实满足您的要求:

  1. 它是不对称的,每一步都将参考提前一步
  2. 它的斜率限制在 1/2 和 2 之间
  3. 它是“c”类型,因此可以以允许 open-begin 和 open-end 的方式进行规范化

如果您还没有,请查看dtw.rabinerJuangStepPattern(4, "c").plot()

不用说,在所有情况下,您得到的是最佳对齐,即所有允许路径中累积距离最小的对齐。

作为替代方案,您可以考虑更简单的asymmetric递归 - 作为您上面的第一次尝试 - 受限于全局扭曲窗口:参见dtw.windowwindow_type论点。这提供了不同形状(和灵活大小)的约束,这可能适合您的特定情况。

PS:编辑添加asymmetricP2递归也类似于 RJ-4c,但斜率更受限制。

于 2020-09-11T08:25:15.630 回答