Matlab 2D函数子序列相似度

Matlab 2D function subsequence similarity

如果我有 2 个函数,比方说 f(x) 和 g(x),我想找到与 g 的某些部分相似的 f 的最长部分,我该怎么做?
例如,考虑下图:

很明显它们在起始位置彼此足够相似,但如果它们处于随机位置怎么办?
这就是重点,我需要发现最长的相似部分...一些提示?
在我的例子中,两个 "functions" 是两首歌曲的数组表示,我想找到它们中最相似的部分,所以它们应该是

  1. 99% 的表示不同(见下面的第二个例子)
  2. 只是在随机位置勉强相似:除了水平线,绝不会找到完美匹配

您可以使用互相关 (xcor) 来做到这一点。

此方法计算 2 个信号之间每个 "offset" 的相关性。最高相关点将是您需要给 signal2 以匹配 signal1 的偏移量。阅读文档以获取示例和用法。