Найти заданную строку в матрице

У меня есть m-n-matrix в MATLAB , скажем M. У меня есть вектор-строка из n элементов, то есть одна на n столбцов, например X.

Я знаю, что X – это строка где-то в M. Как найти индекс в M?

РЕДАКТИРОВАТЬ:

предложение гновичей еще проще, чем мое:

 [~,indx]=ismember(X,M,'rows') indx = 3 

ПЕРВЫЙ РЕШЕНИЕ:

Вы можете легко сделать это, используя find и ismember . Вот пример:

 M=magic(4); %#your matrix M = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 X=[9 7 6 12]; %#your row vector find(ismember(M,X),1) ans = 3 

Прежде, чем я узнал о ismember , я имел обыкновение делать:

 index = find(all(bsxfun(@eq, M, X), 2)); 

Но использование ismember(X, M, 'rows') определенно предпочтительнее.

Другим решением, которое возвращает индекс строки для каждого вхождения X, является

 find(sum(abs(M-ones(rows(M),1)*X),2)==0) 

Кроме того, это решение может быть легко адаптировано для поиска строк, которые находятся в пороговом значении X следующим образом (если числовой шум является проблемой)

 tolerance = 1e-16; %setting the desired tolerance find(sum(abs(M-ones(rows(M),1)*X),2) 

Это не-петлевая версия. Это подходит, только если M (ваша matrix) не очень велика, т.е. n и m малы. X – ваша строка:

 function ind = findRow(M,X) tmp = M - repmat(X,size(M,1),1); ind = find(tmp,1); end 

Если M слишком велико, это может быть быстрее, чтобы повторить строки M и сравнить каждую строку с вашим вектором.

@Edit: переименованные переменные соответствуют именам, используемым в вопросе.

  • рисовать эллипс и эллипсоид в MATLAB
  • Является ли спецификацией строки MATLAB конкретным или столбцом?
  • Перемещение оси y вверх ногами в MATLAB
  • Как построить неравенство
  • Как установить DPI приложений Java Swing в Windows / Linux?
  • быстрая 2-мерная гистограмма в матлабе
  • Как я могу разделить каждую строку матрицы на фиксированную строку?
  • Как я могу сгенерировать список зависимостей функций в MATLAB?
  • Как найти индекс n наименьших элементов в векторе
  • Понимание примера Matlab FFT
  • Изменение размера изображения с билинейной интерполяцией без увеличения
  • Давайте будем гением компьютера.