2014-11-21 3 views
0

Я хочу получить индекс минимальной строки с определенным значением в определенном столбце.Как получить индекс строки с минимальным значением и конкретным значением с помощью одного оператора

Например,

ma = [8 1 4; 3 1 5; 1 2 4; 1 2 5] 


ma = 

    8  1  4 
    3  1  5 
    1  2  4 
    1  2  5 

выбора второго столбца (col = 2) и val = 2, как вы можете видеть, второй столбец имеет два элемента с значением 2, и я хочу один с минимальным индексом (index = 3).

До сих пор я придумал,

[value1,index1]=min(ma(ma(:,col) == val,1)) 


value1 = 

    1 


index1 = 

    1 
+0

'[val, ind] = min (ma (:, 1: 2))' Ваши ожидаемые значения? min равно «1» в обоих столбцах. – Rashid

+0

ожидаемое значение равно 3, я хочу получить первый индекс строки соответствия –

ответ

1

Вы должны использовать,

col = 2; 
val = 2; 
ind = min(find(ma(:,col)==val)); 

который даст ind = 3.

+0

Вот что я бы использовал. + 1 – rayryeng

+0

Спасибо, я нашел решение. найти (MA (:, 2) == 2 & ма (:, 1) == мин (ма (ма (:, 2) == 2,1)), 1) –