加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

matlab 数组索引和逻辑索引

(2015-03-17 22:22:50)
分类: matlab学习笔记
转载自网易博客:http://blog.163.com/yinhexiwen@126/blog/static/64048266201221235634263/

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
所以,a(find(a>0.5))等价于a(a>0.5)

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有