Найти векторные элементы, соответствующие двум условиям в Matlab - PullRequest
7 голосов
/ 05 декабря 2011

У меня есть вектор a = [1 5 3 4 2]. Я хотел бы найти все элементы, которые 1<a<5. Как мне сделать это в Matlab?

Лично я разработал одно решение, но оно громоздко:

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

Какой способ лучше?

Ответы [ 3 ]

14 голосов
/ 05 декабря 2011

Использование логическое индексирование :

>> a = [1 5 3 4 2];
>> a = a(1 < a & a < 5)
a = 
    3    4    2
5 голосов
/ 05 декабря 2011

Простая настройка вашего кода упростит его:

a = [1 5 3 4 2];
disp(find(a>1&a<5))
3 голосов
/ 08 марта 2014

ismember - хороший выбор для отдельных случаев

a = [1 5 3 4 2];
find(ismember(a, 2:4))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...