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 ответов
вы можете использовать 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);