2017-03-15 1 views
2

첫 번째 열이 영역을 나타내고 두 번째 열이 15 개의 개체에 해당하는 원형도를 나타내는 15 * 2 배열이 있습니다.2 개 기준으로 선택 - Matlab

Area  Circularity 
-----  ----------- 
22041  1.1703 
23458  2.8425 
155  1.4165 
37  2.1089 
215  1.5692 
41  1.0549 
659  1.7144 
64  1.0508 
3   0.3092 
584  1.2543 
26  1.1132 
396  2.9046 
1   0 
3   0.8488 
4   0.4638 

예상 결과 :

22041 1.1703 

답변

3

당신에게 원형을 위해 다음과 같은 조건을 적용하는 동안 나는> 0.9 < = 1.2

예로 최대 면적을 가진 행을 선택해야합니다 두 번째 열에 조건부를 적용하여 범위가 (0.9 1.2]인지 확인한 다음 결과로 나온 logical 배열에 첫 번째 열을 곱하면됩니다. false0true으로 처리되므로 1으로 처리되므로 두 번째 열에 대한 기준을 충족하지 않는 첫 번째 열의 값을 제로 아웃합니다. 그런 다음 max의 두 번째 출력을 사용하여 최대 값을 포함하는 행을 가져올 수 있습니다.

[~, ind] = max(data(:,1) .* (data(:,2) > 0.9 & data(:,2) <= 1.2)); 
result = data(ind,:) 
+0

좋은 답변에 많은 감사를드립니다. 그러나 객체를 표시하는 것과 관련된 것이 있습니다. (ind)는 15 개의 레이블이 붙은 객체의 인덱스라고 가정합니다. 그러나 (결과) 값이 정확하고 해당 (ind) 값 = 2는 1이어야합니다. 즉, index = 1입니다. –

+1

@MohamedFarrag 제공된 정확한 데이터를 사용하여 값이 1이됩니다. 귀하의 데이터가 게시 한 데이터와 다른 경우 업데이트하십시오. – Suever

+0

네, 제 잘못으로 인해 제 분류가 달라졌습니다. 이제 제대로 작동하고 있습니다. 다시 한번 감사드립니다. @Suever –

관련 문제