Индексы от линейного индекса
[I,J] = ind2sub(siz,IND)
[I1,I2,I3,...,In] = ind2sub(siz,IND)
Функция ind2sub
определяет эквивалентные нижние значения, соответствующие одному индексу в массив.
[I,J] = ind2sub(siz,IND)
возвращает матрицы I
и J
, содержащий эквивалентные индексы строки и столбца, соответствующие каждому линейному индексу в матричном IND
для матрицы размера siz
. siz
является вектором с элементами ndim(A)
(в этом случае, 2), где siz(1)
является количеством строк, и siz(2)
является количеством столбцов.
Для матриц [I,J] = ind2sub(size(A),find(A>5))
возвращает те же значения как [I,J] = find(A>5)
.
[I1,I2,I3,...,In] = ind2sub(siz,IND)
возвращает массивы индекса n
I1
, I2
, ...
, In
, содержащий эквивалентный многомерный массив, преобразовывает в нижний индекс эквивалентный IND
для массива размера siz
. siz
является n
- вектор элемента, который задает размер каждого измерения массива.
Входом IND
может быть single
, double
или любой целочисленный тип. Выходные параметры всегда имеют класс double
.
Отображение от линейных индексов, чтобы преобразовать эквиваленты в нижний индекс для 3х3 матрицы
Этот код определяет индексы строки и столбца в 3х3 матрице элементов с линейными индексами 3, 4, 5, 6.
IND = [3 4 5 6] s = [3,3]; [I,J] = ind2sub(s,IND) I = 3 1 2 3 J = 1 2 2 2
Отображение от линейных индексов, чтобы преобразовать эквиваленты в нижний индекс для 2 массивом 2 на 2
Этот код определяет нижние эквиваленты в 2 массивом 2 на 2 элементов, линейные индексы 3, 4, 5, 6 которых заданы в матрице IND
.
IND = [3 4;5 6]; s = [2,2,2]; [I,J,K] = ind2sub(s,IND) I = 1 2 1 2 J = 2 2 1 1 K = 1 1 2 2
При вызове ind2sub
для N-мерной матрицы вы обычно предоставляли бы выходные аргументы N в вызове: один для каждой размерности матрицы. Этот пример показывает то, что происходит, когда вы возвращаетесь три, два, и один вывод при вызове ind2sub
на 3-мерной матрице.
Матрица 2 2 на 2, и линейные индексы равняются 1 - 8:
dims = [2 2 2]; indices = [1 2 3 4 5 6 7 8];
Вызов с 3 выводами ind2sub
возвращает ожидаемые индексы для 2 матрицей 2 на 2:
[rowsub colsub pagsub] = ind2sub(dims, indices) rowsub = 1 2 1 2 1 2 1 2 colsub = 1 1 2 2 1 1 2 2 pagsub = 1 1 1 1 2 2 2 2
Если вы задаете только два выходных параметров (строка и столбец), ind2sub
все еще возвращает индекс для каждого заданного индекса, но исключает третью размерность из матрицы, возвращая индексы для 2-мерного, 2 4 матрица вместо этого:
[rowsub colsub] = ind2sub(dims, indices) rowsub = 1 2 1 2 1 2 1 2 colsub = 1 1 2 2 3 3 4 4
Если вы задаете тот вывод (строка), ind2sub
исключает и вторые и третьи размерности из матрицы и возвращает индексы для 1-мерного, 1 8 матрица вместо этого:
[rowsub] = ind2sub(dims, indices) rowsub = 1 2 3 4 5 6 7 8