在Matlab中找到匹配两个条件的向量元素

时间:2011-12-04 21:42:10

标签: matlab find

我有一个向量a = [1 5 3 4 2]。我想找到a的所有元素,1<a<5。我怎么在Matlab中做到这一点?

就个人而言,我已经开发出一种解决方案,但这很麻烦:

a = [1 5 3 4 2];
ix = find(a>1);
ix = ix(find(a(ix)<5));
disp(a(ix))

什么是更好的方法?

3 个答案:

答案 0 :(得分:14)

使用logical indexing

>> a = [1 5 3 4 2];
>> a = a(1 < a & a < 5)
a = 
    3    4    2

答案 1 :(得分:5)

对代码进行简单的调整可以简化它:

a = [1 5 3 4 2];
disp(find(a>1&a<5))

答案 2 :(得分:3)

对于离散案例,

ismember是一个不错的选择

a = [1 5 3 4 2];
find(ismember(a, 2:4))