matlab sub2ind函数

sub2ind官方解释

sub2ind(arraySizedim1Subdim2Subdim3Sub, ...) 为大小是 arraySize 的 N 维数组的每个维度返回与指定的下标等效的线性索引。arraySize 输入是包含 n 个元素的矢量,指定数组中的维数。dimNSub 输入是正整数标量或矢量,指定矩阵的一个或多个行-列下标。

我的理解 arraySize 则是一个数组,dim1Sub 是一个位置即可以是行坐标值,也可以二维坐标。dim2Sub 是一个位置即可以是列坐标值,也可以二维坐标。

  • 荔枝

A=[1:3;4:6]
D=sub2ind(size(A),2,3)

  • 结果:

A =

     1     2     3
     4     5     6


D =

     6

分析:则结果是来是来自与第二行第三列的位置值, 注意:matlab中矩阵的存储是按列存储的顺序。

 

  • 荔枝

A=[1:3;4:6]
D=sub2ind(size(A),[1,3],[2,3])

  • 结果:

错误使用 sub2ind (line 43)
下标超出范围。

看了这篇大牛写的文章,明白了自己出错。

https://blog.csdn.net/u011624019/article/details/80345717?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EOPENSEARCH%7Edefault-1.vipsorttest&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EOPENSEARCH%7Edefault-1.vipsorttest

 

D=sub2ind(size(A),[1,3],[2,3]) 是索引出[1,2]和[3,3]的坐标

  • 荔枝

A=[1:3;4:6;7:9]
D=sub2ind(size(A),[1,2],[3,3])

  • 结果:

A =

     1     2     3
     4     5     6
     7     8     9


D =

     7     8

  • 分析 sub2ind返回值是坐标的位置值

 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: sub2ind函数MATLAB中的一个函数,用于将多维数组的子脚标转换为线性索引。其语法为: ind = sub2ind(sz,sub) 其中,sz是一个包含数组各维度大小的向量,sub是一个包含各维度子脚标的矩阵或向量。函数返回一个包含相应线性索引的向量ind。 例如,对于一个3×4的矩阵A,其子脚标为(2,3)的元素可以通过以下代码获取: ind = sub2ind(size(A),2,3); A(ind) 其中,size(A)返回矩阵A的大小向量[3,4],2和3分别表示第一维和第二维的子脚标。函数返回的ind为7,表示该元素在矩阵A中的线性索引为7。 sub2ind函数在处理多维数组时非常有用,可以方便地将多维数组的子脚标转换为线性索引,从而更方便地进行数组操作。 ### 回答2: MATLAB中,我们经常需要将多维数组的下标转换为线性索引,或将线性索引转换为多维数组的下标,这时候sub2ind函数就可以帮助我们完成这个任务。 sub2ind函数的用法格式如下: sub2ind(sizeVector, subVector) 其中,sizeVector表示多维数组各维度的大小,subVector表示需要转换的多维数组下标。该函数会将subVector转换为对应的线性索引。 例如,对于一个3x4x2的三维数组A,我们希望将它的(2,3,1)处的元素转换为线性索引,可以使用以下代码: sizeVector = size(A); subVector = [2,3,1]; linIndex = sub2ind(sizeVector, subVector); 执行该代码后,可以得到linIndex的值为19。这说明(2,3,1)处的元素在A中的线性索引为19。 反过来,我们也可以使用ind2sub函数将线性索引转换为多维数组下标: [indx, indy, indz] = ind2sub(size(A), linIndex); 该函数会将A中索引为linIndex的元素的位置转换为(indx, indy, indz)。 总之,sub2ind函数是一个非常常用的函数,如果你在MATLAB编程中需要处理多维数组的下标和索引转换问题,那么sub2ind函数一定会非常实用。 ### 回答3: sub2ind函数MATLAB中非常常用的函数之一,主要作用是将矩阵的行列坐标转换为线性索引。例如,我们有一个3x3的矩阵A,我们想要获取其中第2行第3列的元素,我们可以使用A(2,3)来获取,但有时候我们会需要将其转换为线性索引,方便我们进行其他计算。此时我们就可以使用MATLAB中的sub2ind函数来实现。 sub2ind函数的语法如下: ind = sub2ind(sizeMatrix, rowSub, colSub) 其中,sizeMatrix为矩阵的大小,即一个包含矩阵行数和列数的向量,例如对于一个3x3的矩阵,sizeMatrix为[3,3];rowSub和colSbu分别为矩阵中的行坐标和列坐标,也可以使用向量来表示,例如我们需要获取矩阵的第2行第3列和第1行第2列的元素,则可以写为[rowSub, colSub] = [2, 3; 1, 2]。最后,函数将会返回一个包含所要获取元素的线性索引的向量ind,该向量的长度取决于rowSub和colSub中的元素个数。 一个简单的例子如下: 假设我们有一个3x3的矩阵A A = [1 2 3; 4 5 6; 7 8 9] 我们想要获取其中第2行第3列和第1行第2列的元素,则可以使用以下命令: [rowSub, colSub] = [2, 3; 1, 2]; ind = sub2ind(size(A), rowSub, colSub) 此时,ind将会返回[6, 2],表示所要获取元素的线性索引。我们可以通过以下命令获取矩阵中对应位置的元素: A(ind) 结果将会返回[6, 2]对应的元素[6, 2]。 总之,使用sub2ind函数可以将矩阵中的行列坐标转换为线性索引,方便进行其他计算,在MATLAB中应用广泛。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值