从多曲线图中识别/提取相同的曲线

时间:2014-06-27 22:59:22

标签: matlab

让我们说我有一个包含300条曲线的情节。 Matlab 2014a中是否有任何方法,以便我可以确定哪些曲线彼此相同?更具体地说,如果我在一个图上有10条曲线,曲线1是相同的并且非常接近曲线2,曲线3,4和5也是如此。是否有任何自动化的方法让Matlab做到而不是视觉检查?

由于

乔治

1 个答案:

答案 0 :(得分:0)

可能需要一段时间,但如果您的300条曲线位于数组中,请说c(n,300)n是任意的,是每条曲线都有一个点的数量。

对于i in 1:300j in i:300,您希望将c(:,i) - c(:,j)与给定的阈值进行比较(这取决于您希望两条曲线相互之间的差异程度)。 我这样做:abs(sum(c(:,i) - c(:,j))) < thresh - &gt;对两条曲线之间所有点的差值求和,如果曲线相似,差值应该很小。

如果您发现低于阈值的c(:,j),则要将其从300曲线池中删除。 这是由c = c(:,~ismember(1:size(c,2),j));完成的 这给你一个代码:

i = 1;
thresh = 1; %arbitrary threshold here adapt to you needs
while i<size(c,2)
j = i+1;
while j<size(c,2)
if abs(sum(c(:,i) - c(:,j))) < thresh
c = c(:,~ismember(1:size(c,2),j)); %remove the curve j from c
else
j = j+1;
end
end
i = i+1;
end

修改 当您与阈值进行比较时,您实际上想要与总和的绝对值进行比较。 更改了我的代码以反映这一点。