【matlab矩阵运算】06、matlab索引:位置索引、线性索引和逻辑索引

官网内容:数组索引

1 位置索引

1.1 (行号,列号)索引

要访问矩阵中的某个元素,需依序指定该元素的行号和列号。

>> A

A =

     1     2     3
     4     5     6

>> A(1,2)

ans =

     2

1.2 索引向量

>> A([1 2],1)

ans =

     1
     4

1.3 使用:生成索引向量

:大大的妙,大大的方便!

>> A=[1 2 3 4 5 6 7 8 9]

A =

     1     2     3     4     5     6     7     8     9

>> A(1:5)

ans =

     1     2     3     4     5

>> A(1:end)

ans =

     1     2     3     4     5     6     7     8     9

>> A(1:2:end)

ans =

     1     3     5     7     9

>> A(1:3:end)

ans =

     1     4     7

2 线性索引

虽然 MATLAB 根据定义的大小和形状显示数组,但实际上数组在内存中都存储为单列元素。我们用:可以看到该单列元素

>> A=[1 2 3;4 5 6]

A =

     1     2     3
     4     5     6

>> A(:)

ans =

     1
     4
     2
     5
     3
     6

因此访问矩阵可以只用单个索引,而不用指定行号、列号两个值。这种索引称为线性索引

>> A(5)

ans =

     3

sub2ind 和 ind2sub 函数可用于在数组的原始索引和线性索引之间进行转换。
例如:计算大小为2*3的A的第一行第三列元素的线性索引ind = sub2ind(sz,row,col)

>> A

A =

     1     2     3
     4     5     6

>> ind = sub2ind([2 3],1,3)

ind =

     5

反过来[row,col] = ind2sub(sz,ind)

>> [row,col]=ind2sub([2 3],ind)

row =

     1


col =

     3

线性索引用途:要找矩阵C中的指定几个元素,知道元素的行数和列数,就可以用线性索引。
要求矩阵第x行y列的线性索引公式为:idx=(y-1)*row+x

以下示例要求行数为A,列数为B(A与B一一对应)的矩阵C中元素:

>> A

A =

     1     2

>> B

B =

     3     4

>> C=magic(4)

C =

    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

>> idx=(B-1)*4+A

idx =

     9    14

>> C(idx)

ans =

     3     8

3 逻辑索引

逻辑索引大大的妙,大大的方便!
可以用 ><==~=

>> A=A(:)

A =

     1
     4
     2
     5
     3
     6

>> A(A<5)

ans =

     1
     4
     2
     3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值