如何找到两条曲线和相似的分数之间的相似性?(how to find the similarity b

2019-07-29 04:43发布

我有两个数据组(T,Y 1)和(T,y2)上。 这些数据集在视觉上看起来一样,但他们的一些时间延迟或幅值偏移。 我想找到两条曲线(给出相似性1的大约类似曲线不相似的曲线得分和0)之间的相似度。 有些曲线似乎是因为在数据的振荡有所不同。 所以,我正在寻找,找到曲线之间的相似性的方法。 我已经在Matlab试图梯度命令查找曲线的在每个时间步骤中的斜率和进行了比较。 但它没有给我满意的结果。 请有人建议我找曲线之间的相似性的方法。

提前致谢

Answer 1:

这个答案假定您的Y1和Y2 信号 ,而不是曲线 。 后者我会尝试用POLYFIT到parametrise。

如果他们真的看起来是一样的,但在时间上移动(而不是缠),那么你可以:

y1n=y1/norm(y1);
y2n=y2/norm(y2);
normratio=norm(y1)/norm(y2);
c=conv2(y1n,y2n,'same');
[val ind]=max(c);

IND将指示时移和normratio在幅度上的差异。 既可以用作功能为您的相似度度量。 我假设你然而实际上信号通过不只是时移或幅度在这种情况下,某种信号参数化的可能是一个更好的选择,然后建立在这些参数的度量更加变化。

不知道你的数据什么,我会先用AR(假设东西典型的FFT或PRINCOMP将无法正常工作)尝试。



Answer 2:

时间序列数据的相似性的测量,一个传统的解决方案是DTW(动态时间包扎)



Answer 3:

在后续的纸张的DV和DC的距离可能会解决你的问题。 http://bioinformatics.oxfordjournals.org/content/27/22/3135.full



Answer 4:

  1. Kolmongrov Smirnov检验( kstest2在Matlab功能)
  2. 卡方检验
  3. 来测量相似性有一个叫做MIC度量:最大信息系数。 它量化数据2或曲线之间共享的信息。


文章来源: how to find the similarity between two curves and the score of similarity?