matlab中的sub2ind函数

在matlab中,矩阵的存储是按列优先,sub2ind函数将矩阵中指定元素的行列下标转换成存储的序号,即线性索引号。下面,我们举例子进行说明。

1 建立一个3*4*2的矩阵

rng(0,'twister');   % Initialize random number generator.
A = rand(3, 4, 2)

A(:,:,1) =
    0.8147    0.9134    0.2785    0.9649
    0.9058    0.6324    0.5469    0.1576
    0.1270    0.0975    0.9575    0.9706
A(:,:,2) =
    0.9572    0.1419    0.7922    0.0357
    0.4854    0.4218    0.9595    0.8491
    0.8003    0.9157    0.6557    0.9340

将元素A(2, 1, 2)的下标转换成线性索引号


linearInd = sub2ind(size(A), 2, 1, 2)
linearInd =
    14
A(2, 1, 2)            A(14)
ans =                 and =
     0.4854               0.4854

2 针对这种三维的矩阵,如果缺省第三个下标,默认为1。


linearInd = sub2ind(size(A), 2, 4)
ans =
    11
linearInd = sub2ind(size(A), 2, 4, 1)
ans =
    11

3 假如要转换多个元素,我们可以使用一条命令完成。例子是转换5个元素下标为线性索引号。


sub2ind(size(A), 3, 3, 2);
sub2ind(size(A), 2, 4, 1);
sub2ind(size(A), 3, 1, 2);
sub2ind(size(A), 1, 3, 2);
sub2ind(size(A), 2, 4, 1);
sub2ind(size(A), [3 2 3 1 2], [3 4 1 3 4], [2 1 2 2 1])
ans =
    21    11    15    19    11
%%[3 2 3 1 2], [3 4 1 3 4], [2 1 2 2 1] 分别代表行,列,纵向的下标。%%
 [A(3,3,2),   A(2,4,1),   A(3,1,2),   A(1,3,2),   A(2,4,1)]
ans =
    0.6557    0.1576    0.8003    0.7922    0.1576

A([21, 11, 15, 19, 11])
ans =
    0.6557    0.1576    0.8003    0.7922    0.1576


原文:https://blog.csdn.net/helei001/article/details/51422393 
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值