【发布时间】:2018-07-11 10:04:23
【问题描述】:
对于相同的实验条件,我有一些“n”条实验曲线。由于系统中固有的热漂移,数据集彼此之间并不完全对齐。我正在寻找一种强大的算法来为我对齐数据曲线。
这是我迄今为止尝试过的:
x = linspace(1,100,1000);
y = tanh(0.09*x) ; figure; plot(x,y)
y1 = tanh(0.09*(x+10)) ; hold on; plot(x,y1)
y2 = tanh(0.09*(x-10)) ; hold on; plot(x,y2)
曲线如下所示:
这就是我想要得到的:
(这里我将曲线y1和y2对齐在曲线y的顶部)
我认为互相关可以帮助我调整数据。所以我尝试了:
[cc,lag] = xcorr(y,y1,'none');
[~,ind] = max(cc);
sh = lag(ind);
但这给了我sh=0。
有更好的方法吗?
【问题讨论】:
-
由于曲线是单调的,似乎很难定义它们何时对齐
-
请说明您想获得什么。从某种意义上说,它们似乎已经一致了。曲线应该共享哪些特征?
-
@Dev-iL :我想在 x 方向上对齐曲线,即我希望它们彼此重叠(尤其是曲线开头的部分)。
-
@LuisMendo :对不起,我不明白你的说法。单调曲线很难对齐吗?你能解释一下你的评论吗?
-
@Backspace 如果曲线是例如unimodal,您可以更轻松地定义对齐方式。视觉上很清楚如何水平移动一个以使其与另一个更对齐。使用单调函数我不知道该怎么做
标签: matlab alignment overlap curves sequence-alignment