ind2sub

Индексы от линейного индекса

Синтаксис

[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.

Примеры

Пример 1 - двумерные матрицы

Отображение от линейных индексов, чтобы преобразовать эквиваленты в нижний индекс для 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 на 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

Пример 3 - эффекты возврата меньшего количества Выходных параметров

При вызове 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

Расширенные возможности

Смотрите также

| |

Представлено до R2006a