exponenta event banner

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. Преобразуйте подстрочные индексы в линейные индексы.

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

Преобразование индекса подстрочного индекса массива 3-D в один линейный индекс.

Создайте массив и найдите линейный индекс, соответствующий элементу в позиции (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