sub2ind

Преобразуйте индексы в линейные индексы

Описание

пример

ind = sub2ind(sz,row,col) возвращает линейные индексы ind соответствие индексам строки и столбца в row и col для матрицы размера sz. Здесь sz вектор с двумя элементами, где sz(1) задает количество строк и sz(2) задает количество столбцов.

пример

ind = sub2ind(sz,I1,I2,...,In) возвращает линейные индексы ind соответствие многомерным индексам в n массивы I1,I2,...,In для многомерного массива размера sz. Здесь sz вектор с n элементы, который задает размер каждого измерения массива.

Примеры

свернуть все

Отображение от индексов (индексирующий положением) в линейные индексы для 3х3 матрицы может быть проиллюстрировано как в следующем.

Задайте индексы строки и столбца в 3х3 матрице. Преобразуйте индексы в линейные индексы.

row = [1 2 3 1];
col = [2 2 2 3];
sz = [3 3];
ind = sub2ind(sz,row,col)
ind = 1×4

     4     5     6     7

Отображение от индексов до линейных индексов для 2 массивом 2 на 2 может быть проиллюстрировано как в следующем.

Задайте строку, столбец и индексы страницы в 2 массивом 2 на 2. Преобразуйте индексы в линейные индексы.

I1 = [1 2 1 2];
I2 = [2 2 1 1];
I3 = [1 1 2 2];
sz = [2 2 2];
ind = sub2ind(sz,I1,I2,I3)
ind = 1×4

     3     4     5     6

Преобразуйте индекс индекса трехмерного массива в один линейный индекс.

Создайте массив и найдите линейный индекс, соответствующий элементу в (2,1,2) положение.

A = rand(3,4,2);
linearInd = sub2ind(size(A),2,1,2)
linearInd = 14

Проверяйте, что обе версии индекса обращаются к тому же элементу.

A(2,1,2)
ans = 0.4854
A(14)
ans = 0.4854

Входные параметры

свернуть все

Размер массива в виде вектора из положительных целых чисел. Каждый элемент этого вектора указывает на размер соответствующей размерности. Например, [2 3 4] задает массив 2 на 3 на 4.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Индексы строки в виде скаляра, вектора, матрицы или многомерного массива. Размер row должен совпасть с размером col.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Индексы столбца в виде скаляра, вектора, матрицы или многомерного массива. Размер col должен совпасть с размером row.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Многомерные индексы в виде скаляра, вектора, матрицы или многомерного массива. Каждый массив I1,I2,…,In должен иметь тот же размер.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Выходные аргументы

свернуть все

Линейные индексы в виде скаляра, вектора, матрицы или многомерного массива. Размер ind совпадает с размером входа row, col, или I1,I2,…,In.

Типы данных: double

Алгоритмы

Для массива A, если ind = sub2ind(size(A),I1,…,In), затем A(ind(k)) = A(I1(k),…,In(k)) для всего k.

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

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