exponenta event banner

ind2sub

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

Описание

пример

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

пример

[I1,I2,...,In] = ind2sub(sz,ind) прибыль n множества I1,I2,...,In содержащий эквивалентные многомерные подстрочные индексы, соответствующие линейным индексам ind для многомерного массива размера sz. Здесь sz является вектором с n элементы, определяющие размер каждого размера массива.

Примеры

свернуть все

Преобразование линейных индексов [3 4 5 6] для подстрочных значений строк и столбцов в матрице 3 на 3. Отображение линейных индексов на подстрочные индексы (индексирование по позициям) показано ниже.

Создайте входные векторы и выполните преобразование.

ind = [3 4 5 6];
sz = [3 3];
[row,col] = ind2sub(sz,ind)
row = 1×4

     3     1     2     3

col = 1×4

     1     2     2     2

Преобразование линейных индексов [3 4 5 6] к нижним индексам во множестве 2 на 2 на 2. Отображение от линейных индексов до нижних индексов (вносящий в указатель положением) для множества 2 на 2 на 2 может быть проиллюстрировано как в следующем.

Создайте входные векторы и выполните преобразование.

ind = [3 4 5 6];
sz = [2 2 2];
[I1,I2,I3] = ind2sub(sz,ind)
I1 = 1×4

     1     2     1     2

I2 = 1×4

     2     2     1     1

I3 = 1×4

     1     1     2     2

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

Создайте массив и найдите индекс подстрочного индекса, соответствующий 14-му элементу массива.

A = rand(3,4,2);
[row,col,page] = ind2sub(size(A),14)
row = 2
col = 1
page = 2

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

A(14)
ans = 0.4854
A(row,col,page)
ans = 0.4854

При использовании ind2sub для N-мерного массива обычно требуется ввести N выходных аргументов для каждой размерности матрицы. В этом примере показаны различные результаты при возврате меньшего количества выходных аргументов для 3-мерного массива.

Создайте входные аргументы, должен был преобразовать линейные индексы 1 - 8 для 3-мерного множества с размером 2 на 2 на 2.

ind = 1:8;
sz = [2 2 2];

Укажите три выходных аргумента при использовании ind2sub возвратить ряд, колонку и нижние индексы страницы для множества 2 на 2 на 2.

[row,col,page] = ind2sub(sz,ind)
row = 1×8

     1     2     1     2     1     2     1     2

col = 1×8

     1     1     2     2     1     1     2     2

page = 1×8

     1     1     1     1     2     2     2     2

Если указаны только два выходных аргумента, ind2sub игнорирует третье измерение массива и возвращает подстрочные значения для двумерного массива с размером 2 на 4.

[row,col] = ind2sub(sz,ind)
row = 1×8

     1     2     1     2     1     2     1     2

col = 1×8

     1     1     2     2     3     3     4     4

Если указан только один выходной аргумент, ind2sub игнорирует второе и третье измерения массива и возвращает подстрочные значения для одномерного массива с размером 1 на 8.

row = ind2sub(sz,ind)
row = 1×8

     1     2     3     4     5     6     7     8

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

свернуть все

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

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

Линейные индексы, заданные как скаляр, вектор, матрица или многомерный массив.

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

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

свернуть все

Подстрочные значения строк, возвращаемые в виде скаляра, вектора, матрицы или многомерного массива. Размер row совпадает с размером входа ind.

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

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

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

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

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

Совет

  • Получение линейных индексов элементов матрицы, удовлетворяющих определенному условию матрицы A, вы можете использовать find с одним выходным аргументом. Чтобы получить индексы нижнего индекса, используйте find с двумя выходными аргументами. Например, [row,col] = ind2sub(size(A),find(A>5)) дает тот же результат, что и [row,col] = find(A>5).

Алгоритмы

Для массива A, если [I1,…,In] = ind2sub(size(A),ind), то A(I1(k),…,In(k)) = A(ind(k)) для всех k.

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

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