MATLAB学习笔记之-----数组、矩阵、向量索引和逻辑索引

     一个矩阵或者数组作为另一个矩阵下标去选取相应的矩阵元素,称为数组索引。

例:

 x=10:10:50;

 y=[5 4 1 2 3];

 z=x(y)

 z=

 50 40 10 20 30

     逻辑索引则是使用0和1 构成的矩阵从其他矩阵中提取所需元素,这时逻辑矩阵必须和要索引的矩阵大小一样

 x=10:10:50;

 y=logical([0 1 1 1 0]);

 z=x(y)

 z=

  20 30 40 

    两种索引法都允许对矩阵整体操作,不必使用循环,简化了代码,也使代码运行速度更快.逻辑索引的速度要快于数组索引。

若上述例子中x、y都为矩阵,则等价于先将他们转换成列向量。z=x(y)等价于 A=x(:); B=y(:); z=A(B);


关系运算符、find 和索引

 

   关系运算符的计算结果可以为逻辑值。

>> a=rand(3,3)

a =

    0.8147    0.9134    0.2785

    0.9058    0.6324    0.5469

    0.1270    0.0975    0.9575

>> x=a>0.5

x =

     1     1     0

     1     1     1

     0     0     1

为了获得a中大于0.5的的元素,利用逻辑索引可以简单写成:

>>y=a(a>0.5)

y =

 

    0.8147

    0.9058

    0.9134

    0.6324

    0.5469

    0.9575

 

内置函数find 的输入为逻辑矩阵表达式,返回满足条件的元素的对应的小标组成的向量。

>> a=rand(3,3)

a =

    0.8147    0.9134    0.2785

    0.9058    0.6324    0.5469

    0.1270    0.0975    0.9575

>> a>0.5

ans =

     1     1     0

     1     1     1

     0     0     1

>>y=find(a>0.5)

y =

     1

     2

     4

     5

     8

     9

所以,a(find(a>0.5))等价于a(a>0.5)

----------------------------------------------------------

综上所述,可以看不出,在对矩阵的操作中,本质上是将矩阵按照列的方式排列成一个长长的列向量,再进一步对此列向量进行相关的索引操作。得到的元素位置index也是列向量中元素的位置。

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值