Индексы от линейного индекса
[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