【问题标题】:Matlab 2D function subsequence similarityMatlab 2D函数子序列相似度
【发布时间】:2016-10-03 09:42:20
【问题描述】:

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

很明显它们在起始位置上非常相似,但是如果它们处于随机位置呢?
这就是重点,我需要发现最长的相似部分......一些提示?
就我而言,这两个“函数”是两首歌曲的数组表示,我想找到它们中最相似的部分,所以它们应该是

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

【问题讨论】:

    标签: matlab 2d similarity


    【解决方案1】:

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

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

    【讨论】:

    • 即使“信号”非常不同,这仍然有效吗?我编辑了我的帖子以更明确我的目标:)
    • 您在问题中说“我想找到与 g 的某些部分相似的 f 的最长部分”。这是这样做的方式。如果单数不相似,那么当您寻找相似之处时,您可能找不到它们,对吗?这是一个合乎逻辑的假设。尽管如此,这种方法仍会为您提供最相似的位置,即使 most 意味着“不太相似”
    • @Fujitina 如果你想要一份,那么你可能需要为不同长度的f计算xcorr,这也是一个选项
    猜你喜欢
    • 2018-06-14
    • 2018-09-27
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    • 2015-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多