2012-12-13 57 views
2

所以我有這個圖在MATLAB尋找最高點兩個高斯

enter image description here

此圖使用MATLAB代碼如下位已經創建了現在

TimeTakenWDriver = textread('TimeTakenWDriver.txt'); 
TimeTakenWODriver = textread('TimeTakenWODriver.txt'); 
fig1 = figure; 

h1 = histfit(TimeTakenWDriver); 
std1 = std(TimeTakenWDriver); 
std2 = std(TimeTakenWODriver); 
mean1 = mean(TimeTakenWDriver) 
mean2 = mean(TimeTakenWODriver) 
delete(h1(1)); 
set(h1(2),'color','b'); 
hold on; 
h2 = histfit(TimeTakenWODriver); 
delete(h2(1)); 
set(h2(2),'color','r'); 

創建這兩個高斯我想找到對應於兩個手段「兩個頂點」的兩個y座標,但是找不到任何解決方案,因爲我創建了我的圖形。有任何想法嗎?

+0

不確定它是否是常規繪圖,但除此之外,您可以通過使用光標(使用鼠標)找到最大值。如果這不起作用,我會嘗試像'max(h2(2))' –

+0

我可以使用數據光標來嘗試找到特定的點,但我必須有一個非常穩定的手,然後,最大(h2(2))在這種情況下給出了178.因此,它似乎找到了我的X軸上的最高值。 – Drakthal

+0

不確定你的手是什麼意思,但在點擊靠近頂部的點後,可以使用箭頭鍵找出一個是最佳的。對於一個程序化的解決方案,您需要深入探究h2的設計。 –

回答

1

您可以嘗試直接從情節獲取數據:

C = get(get(gca, 'Children'), 'YData'); 

,然後找到使用max峯值:

max(C(:)) 

請注意,如果您有相同的兩個或多個地塊軸(如你的例子),C將是一個單元陣列,所以你需要分別訪問每個單元格以獲得峯值:

cellfun(@(x)max(x(:)), C) 
+1

非常感謝,就像我想要 – Drakthal

+0

那樣工作是否有可能找到這兩個gaussians相交的座標?或者一個高斯的y座標給出了它的x值?我正在用'histfit'繪製gaussians – user2550888

+0

@ user2550888當然,這很容易。 y座標('YData')在數組'C'中獲得。對x座標('XData')執行相同操作並將它們存儲在另一個數組中。現在,對於一個軸上的特定座標,您將能夠找到另一個軸上的匹配座標... –