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

tex*_*nic 7 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))
Run Code Online (Sandbox Code Playgroud)

什么是更好的方式?

Dan*_*hoa 14

使用逻辑索引:

>> a = [1 5 3 4 2];
>> a = a(1 < a & a < 5)
a = 
    3    4    2
Run Code Online (Sandbox Code Playgroud)

  • 这很奇怪.我试过`a(1 <a && a <5)`但是没想到只有`&`.谢谢! (2认同)

小智 5

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

a = [1 5 3 4 2];
disp(find(a>1&a<5))
Run Code Online (Sandbox Code Playgroud)