2012-12-13 7 views
2
에 최고 지점을 찾기

그래서 내가 MATLAB이 가우시안

enter image description here

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'); 

이제 MATLAB 코드의 다음 비트를 사용하여 생성 된이 그래프에서 만든이 두 가우시안이 그래프를 두 가지 의미에 해당하는 두 개의 좌표를 찾고 싶습니다. "두 개의 최상위 점"ive가 주위를 돌아 다니며 검색 할 수는 없지만 그래프를 만드는 방식 때문에 작동하는 솔루션을 찾을 수 없습니다. 어떤 아이디어?

+0

정규 플롯인지 여부는 잘 모르겠지만 그렇지 않은 경우 마우스로 커서를 사용하여 최대 값을 찾을 수 있습니다. 이것이 작동하지 않는다면 나는 'max (h2 (2))'와 같은 것을 시도 할 것입니다 –

+0

datacursor를 사용하여 특정 지점을 찾으려고 할 수 있습니다. 그러나 그때 정말 안정된 손을 가져야합니다. max (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

이 두 가우스가 교차하는 좌표를 찾는 것이 가능합니까? 또는 x 값을 가진 한 가우스의 y 좌표? 나는'histfit'을 사용하여 가우시안을 계획하고 있습니다 – user2550888

+0

@ user2550888 물론, 꽤 쉽습니다. Y 좌표 ('YData')는 배열'C'에서 얻어집니다. x 좌표 ('XData')에 대해서도 같은 작업을 수행하고 다른 배열에 저장하십시오. 이제 한 축의 특정 좌표에 대해 다른 축에서 일치하는 좌표를 찾을 수 있습니다 ... –