2017-11-15 19 views
2

나는 벡터 [224x1]의 데이터와 또 다른 일치하는 시간 [224x1]의 벡터를 가지고있다. 데이터의 최저 10 %를 차지하는 최소값을 찾고 싶습니다. 어떻게해야하고 일치하는 시간을 찾을 수 있습니까?Matlab에서 최소 10 %의 데이터를 찾는 방법은 무엇입니까?

정렬 기능 (여기에서 : https://www.mathworks.com/matlabcentral/answers/249619-how-do-i-get-the-top-10-percent-of-the-matrix-value)을 사용해 보았지만 시간이 더 이상 시간 순서대로 없습니다. 순서가 온도

[sortedValues,sortIndex] = sort(THUL_ST_JJA(:),'ascend'); %Sort Ascending 
[sortedDTValues,sortDTIndex] = sort(THUL_dt_JJA(:),'ascend'); %Sort Ascending 

idx = sortIndex(1:ceil(length(sortIndex)*0.1)); %Minimum 10th percent STs 
THUL_ST_min = THUL_ST_JJA(idx); 
THUL_dt_min = THUL_dt_JJA(idx); %Find matching 10th percent minimum times 

여기 타임 샘플이다 (SS MM/DD/YYYY시 : 분 : mm)

06/08/2012 07:00:00 -5.26 
06/08/2012 10:00:00 -5.18 
06/08/2012 09:00:00 -5.1 
06/08/2012 08:00:00 -5.07 
06/08/2012 06:00:00 -4.84 
06/08/2012 11:00:00 -4.84 
06/09/2012 06:00:00 -4.84 
06/09/2012 07:00:00 -4.82 
06/09/2012 05:00:00 -4.79 
06/09/2012 08:00:00 -4.65 
08/29/2012 05:00:00 -4.61 
06/09/2012 09:00:00 -4.49 
08/29/2012 06:00:00 -4.47 

답변

2

정렬 데이터 이는 I 사용 코드이다. 그런 다음 동일한 색인을 사용하여 시간을 정렬하십시오. 이것은 쌍을 함께 유지합니다.

그런 다음 인덱스에 원하는 데이터를 넣으십시오. & 시간에 동일한 색인을 적용하십시오.

[sortData, sortIDX] = sort(rawData,'ascend'); 
sortTime   = rawTime(sortIDX); 

bottom10IDX = 1:ceil(length(sortData)*0.1); 
bottom10Data = sortData(bottom10IDX); 
bottom10Time = sortTime(bottom10IDX);