如何找到两条曲线之间的相似性和相似度得分?

use*_*183 7 matlab time-series similarity curves

我有两个数据集(t,y1)和(t,y2).这些数据集在视觉上看起来相同,但它们是一些时间延迟或幅度变化.我想找到两条曲线之间的相似性(给出近似相似曲线的相似度1得分,不相似曲线得出0).由于数据的振荡,一些曲线似乎不同.所以,我正在寻找找到曲线之间相似性的方法.我已经尝试在Matlab中使用渐变命令来找到每个时间步长的曲线斜率并进行比较.但它没有给我满意的结果.请有人建议我找到曲线之间相似性的方法.

提前致谢

在此输入图像描述

小智 6

这个答案假设你的 y1 和 y2 是信号而不是曲线。后者我会尝试使用 POLYFIT 进行参数化。

如果它们看起来确实相同,但时间发生了变化(而不是缠绕),那么您可以:

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

ind将指示时移和normratio幅度差异。两者都可以用作相似性度量的特征。然而,我假设您的信号实际上不仅仅因时移或幅度而变化,在这种情况下,某种信号参数化可能是更好的选择,然后根据这些参数建立度量。

在不了解您的数据的情况下,我会首先尝试使用 AR(假设像 FFT 或 PRINCOMP 这样典型的东西不起作用)。


xbo*_*.ym 5

对于时间序列数据的相似度测量,一种传统的解决方案是 DTW(Dynamic Time Warpping)