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 - 返回较少输出的影响
对 N 维矩阵调用 ind2sub
时,通常应在调用中提供 N 个输出参数:矩阵的每个维度一个参数。此示例显示在对某个三维矩阵调用 ind2sub
时返回三个、两个和一个输出时发生的情况。
该矩阵为 2×2×2 矩阵,并且线性索引从 1 到 8:
dims = [2 2 2];
indices = [1 2 3 4 5 6 7 8];
具有三个输出的 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×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×8 矩阵的下标:
[rowsub] = ind2sub(dims, indices)
rowsub =
1 2 3 4 5 6 7 8