matlab的ind2sub函数到底返回的是什么?

>> A=[1,2,3;4,5,6];
>> [i,j]=ind2sub(size(A),3)

i =

1

j =

2
---------------------------------------space----------------------------------------
>> A=[1,2,3;4,5,6];
>> ind2sub(size(A),3)

ans =
3
我想问的是为什么需要用[i,j]来接收ind2sub的返回值,还有就是第2中代码时为什么ans等于3!!!!

很高兴为您解答,希望可以帮助你。

matlab数组中元素引用有三种方式:
1.索引 就是由一个整数表示数组中的某一数据,按照列进行排列
2.下标 如果是二维,就是行号和列号
3.布尔数

sub2ind就是将下标转换为索引 !
ind2sub函数就是在指定矩阵尺寸(size)前提下将给定的index转化成行列形式

按照您给的例子来看,
A =
1 2 3
4 5 6

因为matlab中矩阵按照列进行排列,所以对应元素的索引为:
A =
1 3 5
2 4 6
也就是说,按列进行索引。所以你上面的例子,
[i,j]=ind2sub(size(A),3)

是想找出索引位置为3的数值,对应的行列编号是怎么样,因为索引为3的元素2在矩阵的第1行第2列,所以返回i=1,j=2,也就是返回的行标和列标。

一般都是返回两个值的,用来接收行标和列标,返回一个参数的情况下,好像没有什么意义哦。

希望可以帮助你!望采纳!
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-26
ind2sub和sub2ind这对函数,是互逆的一对函数。ind2sub把数组或者矩阵的线性索引转化为相应的下标;sub2ind则正好相反,将下标转化为线性索引。
ind2sub的函数参考:

[plain] view plaincopy
[I,J] = ind2sub(siz,IND)
[I1,I2,I3,...,In] = ind2sub(siz,IND)

sub2ind的函数参考:

[plain] view plaincopy
linearInd = sub2ind(matrixSize, rowSub, colSub)
linearInd = sub2ind(arraySize, dim1Sub, dim2Sub, dim3Sub, ...)

上述的函数参考中,第一个都是二维的情况,第二个扩展到了多维空间。一维的数组就没必要使用这两个函数了,一维的下标本来就是线性索引。

从这个例子中我们看到,MATLAB中的数组是按照列排列的,使用的时候要注意一点。多维的使用和上述类似。
ind2sub的用法也类似

这里说明一点,ind2sub和sub2ind仅仅是下标的转换操作,实际使用中还会强扯到其他的函数,如find, size之类的。
第2个回答  2012-10-16
首先你要理解这个函数是干什么。ind2sub函数是将线性索引转成对应维数的索引值。

说通俗点就是把内存中第几个数在矩阵中对应坐标找出来。

matlab里边数是按照列存储的。按照你给的这个例子。
A=[1,2,3
4,5,6];

也就是说在存储器中,内存里的第一个数是1,第二个是4,第三个是2,第四个是5……

你的命令[i,j]=ind2sub(size(A),3)就是求第三个元素对应的行、列索引值(即矩阵中的位置)。

显然第三个数是2,位于第1行、第2列,所以i=1,j=2。因为你给的A是一个2维的,所以要用两个参数来接收返回值。

还有三维的、四维的……

---------------------------------------space----------------------------------------

第二个问题为什么ans=3。

这个函数是可以有不同形式输出的。如果你给的参数小于给定矩阵的维数,他就会先将这个矩阵降维,然后给你坐标。

也就是说你只给一个输出,就会得到她一维对应的位置。很显然第3个数对应的就是列向量的第三个哦~所以返回就是3,这样没有什么实际意义~
第3个回答  2015-06-21
返回值为索引值,即IND的元素在该二维数组内的行列下标
函数功能:在FreeMat、Matlab中,该函数用于把数组中元素索引值转换为该元素在数组中对应的下标
语法格式:[I,J] = ind2sub(siz,IND)
这种调用格式适用于二维数组,其中siz是数组的尺寸,通常通过调用size函数获取
第4个回答  2018-06-20
MATLAB以列向量形式存储矩阵,例如:A=[1 2 3;4 5 6;7 8 9]的存储形式是[1 4 7 2 5 8 3 6 9]'
所以从下标(i,j)得到索引index的方法是 index=(j-1)*M+i,M为二维矩阵的行数
反过来,就可以从索引得到下标。rem为取余数,得到元素所在行数,floor取整,得到元素所在列数。

例如4x3的二维矩阵,如果索引为 3,对应的下标是(rem(3-1,4)+1,floor((3-1)/4+1)),即(3,1)
同理,索引为4 5 6,对应下标为(4,1),(1,2),(2,2)。

对于三维和高维矩阵,同样的道理,就是从列到行,再到更高的维度。
相似回答