可以說我有一個包含300條曲線的圖。 Matlab 2014a中是否有任何方法可以識別哪些曲線彼此相同?更具體地說,如果我在一幅圖上有10條曲線,則曲線1與曲線2相同且非常接近,與曲線3,4和5相同。是否有任何自動程序可供Matlab使用,以代替視覺效果檢查?從multicurve plot plot中識別/提取相同的曲線
感謝
喬治
可以說我有一個包含300條曲線的圖。 Matlab 2014a中是否有任何方法可以識別哪些曲線彼此相同?更具體地說,如果我在一幅圖上有10條曲線,則曲線1與曲線2相同且非常接近,與曲線3,4和5相同。是否有任何自動程序可供Matlab使用,以代替視覺效果檢查?從multicurve plot plot中識別/提取相同的曲線
感謝
喬治
可能需要一段時間,但如果你的300條曲線是一個數組說c(n,300)
。 n
是任意的,並且是每條曲線都有一個點的點數。
對於i in 1:300
和j in i:300
您想將c(:,i) - c(:,j)
與給定閾值進行比較(這取決於您希望兩條曲線彼此不同)。 我這樣做:abs(sum(c(:,i) - c(:,j))) < thresh
- >對兩條曲線之間所有點的差值求和,如果曲線相似,差值應該很小。
當您在閾值以下找到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
編輯 當你做比較,你居然要比較和的絕對值的閾值。 更改我的代碼以反映這一點。
你對曲線有什麼樣的信息?你如何生成它們? –
我每天都有24小時的溫度。我想確定那些相同且非常接近的日子的溫度,所以我可以用它們的平均值來表示它們。 – George