2015-03-12 4 views
1

Допустим, у меня есть матрица,MATLAB: найти индекс строки из значения столбца первого согласующего

>> m = magic(3) 

m = 

    8  1  6 
    3  5  7 
    4  9  2 

и предположим, у меня есть вектор, содержащий подмножество первых элементов колонн,

>> v = [3 4] 

v = 

    3  4 

Есть ли какая-либо функция, которую я могу использовать, чтобы найти индекс строки из первого элемента столбцов? что я имею в виду -

>> rows = row_index_from_col(m, 1, v) 

rows = 

     2  3 

??

Если нет, то что это лучший способ сделать это?

+1

Приятное использование 'ismember'! :) Мое единственное предложение состоит в том, что вы делаете 'i' матрицу, как в' I = [i ', i', i '] '. Таким образом, вы можете использовать 'I (ismember (m, v))', который вы можете использовать для любого элемента в 'm' все сразу. – eigenchris

+1

'find (any (bsxfun (@ eq, m (:, 1), v), 2))' или 'find (ismember (m (:, 1), v))'? – Divakar

+0

@ Дивакар это круто !!! – ramgorur

ответ

0

Похоже, я получил его -

m = magic(3) 
v = [3 4] 
[~,c] = size(m) 
i = 1:c 
i(ismember(m(:,1),v)) 

там может быть лучше, я не уверен.

Смежные вопросы