可以说我有一个包含300条曲线的图。Matlab 2014a中有什么方法可以识别哪些曲线彼此相同?更具体地说,如果我在一个图形上有10条曲线,则曲线1相同且非常接近曲线2,曲线3,4和5也会发生同样的情况。Matlab是否有自动化的方法来代替可视化检查?
谢谢
乔治
可能要花一点时间,但是如果300条曲线排列成阵列,请说c(n,300)
。n
是任意的,是每条曲线具有一个点的数量。
对于i in 1:300
,j in i:300
您想与c(:,i) - c(:,j)
给定的阈值进行比较(这取决于您希望两条曲线彼此相差多少)。我这样做是:abs(sum(c(:,i) - c(:,j))) < thresh
->将2条曲线之间所有点的差异求和,如果曲线相似,则差异应该很小。
当发现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
编辑当您与阈值进行比较时,您实际上要与总和的绝对值进行比较。更改了我的代码以反映这一点。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句