MATLAB: поиск координат значения в многомерном массиве - PullRequest
7 голосов
/ 08 сентября 2011

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

Например, если у меня есть:

A = [2 4 6; 8 10 12]

A(:,:,2) = [5 7 9; 11 13 15]

, и я хочу найти, где 7, я 'хотелось бы получить координаты i = 1 j = 2 k = 2

Я пробовал варианты find(A == 7), но пока нигде не получил.

Спасибо!

Ответы [ 2 ]

12 голосов
/ 08 сентября 2011

Функция, которую вы ищете: ind2sub:

[i,j,k]=ind2sub(size(A), find(A==7))
i =
     1
j =
     2
k =
     2
0 голосов
/ 08 сентября 2011

Вы можете использовать find, чтобы найти ненулевые элементы в массиве, но это требует немного арифметики.Из документации:

[row,col] = find(X, ...) возвращает индексы строк и столбцов ненулевых записей в матрице X. Этот синтаксис особенно полезен при работе с разреженными матрицами.Если X является N-мерным массивом с N> 2, col содержит линейные индексы для столбцов.Например, для массива X размером 5 на 7 на 3 с ненулевым элементом в X (4,2,3), find возвращает 4 в строке и 16 в столбце.То есть (7 столбцов на странице 1) + (7 столбцов на странице 2) + (2 столбца на странице 3) = 16.

Если матрица M имеет размеры a x b x c,тогда индексы (i,j,k) для некоторого значения x равны:

[row,col] = find(A==x);
i = row;
j = mod(col,b);
k = ceil(col/b);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...