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
两种索引法都允许对矩阵整体操作,不必使用循环,简化了代码,也使代码运行速度更快.逻辑索引的速度要快于数组索引。
关系运算符、find 和索引
关系运算符的计算结果可以为逻辑值。
0.8147
0.9134
0.2785
0.9058
0.6324
0.5469
0.1270
0.0975
0.9575
1
1
0
1
1
1
0
0
1
0.8147
0.9058
0.9134
0.6324
0.5469
0.9575
0.8147
0.9134
0.2785
0.9058
0.6324
0.5469
0.1270
0.0975
0.9575
1 1
0
1 1
1
0 0
1
1
2
4
5
8
例:
例
若上述例子中x、y都为矩阵,则等价于先将他们转换成列向量。z=x(y)等价于 A=x(:); B=y(:);
z=A(B);
关系运算符、find 和索引
>>
a=rand(3,3)
a
=
>>
x=a>0.5
x
=
为了获得a中大于0.5的的元素,利用逻辑索引可以简单写成:
>>y=a(a>0.5)
y
=
内置函数find 的输入为逻辑矩阵表达式,返回满足条件的元素的对应的小标组成的向量。
>> a=rand(3,3)
a =
>> a>0.5
ans =
>>y=find(a>0.5)
y
=
所以,a(find(a>0.5))等价于a(a>0.5)

加载中…