我有两个数据组(T,Y 1)和(T,y2)上。 这些数据集在视觉上看起来一样,但他们的一些时间延迟或幅值偏移。 我想找到两条曲线(给出相似性1的大约类似曲线不相似的曲线得分和0)之间的相似度。 有些曲线似乎是因为在数据的振荡有所不同。 所以,我正在寻找,找到曲线之间的相似性的方法。 我已经在Matlab试图梯度命令查找曲线的在每个时间步骤中的斜率和进行了比较。 但它没有给我满意的结果。 请有人建议我找曲线之间的相似性的方法。
提前致谢
我有两个数据组(T,Y 1)和(T,y2)上。 这些数据集在视觉上看起来一样,但他们的一些时间延迟或幅值偏移。 我想找到两条曲线(给出相似性1的大约类似曲线不相似的曲线得分和0)之间的相似度。 有些曲线似乎是因为在数据的振荡有所不同。 所以,我正在寻找,找到曲线之间的相似性的方法。 我已经在Matlab试图梯度命令查找曲线的在每个时间步骤中的斜率和进行了比较。 但它没有给我满意的结果。 请有人建议我找曲线之间的相似性的方法。
提前致谢
这个答案假定您的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将无法正常工作)尝试。
时间序列数据的相似性的测量,一个传统的解决方案是DTW(动态时间包扎)
在后续的纸张的DV和DC的距离可能会解决你的问题。 http://bioinformatics.oxfordjournals.org/content/27/22/3135.full
kstest2
在Matlab功能)