MATLAB: поиск координат значения в многомерном массиве

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

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

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 ответов


функции вы ищете ind2sub:

[i,j,k]=ind2sub(size(A), find(A==7))
i =
     1
j =
     2
k =
     2

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

[row,col] = find(X, ...) возвращает индексы строк и столбцов ненулевые записи в матрице X. этот синтаксис особенно полезен, когда работа с разреженными матрицами. Если X-N-мерный массив с N > 2, col содержит линейные индексы для столбцов. Например, для 5-by-7-by-3 массив X с ненулевым элементом на X (4,2,3), найти возвращает Четыре в ряду и 16 в col. То есть (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);