2016-08-09 3 views
1

У меня есть вектор цифр:Нахождение первого индекса первого вхождения цифр

[0 0 0 1 1 1 1 3 2 2 2 3 3 3 3 5 5 5 5] 

Я хочу найти индекс первого вхождения либо 2, 3 или 5. Таким образом, в этом случае, index будет 8.

Я думал о преобразовании 1s в 0s, а затем о поиске первого вхождения ненулевого, но это кажется неэффективным. Есть ли эффективный способ сделать это? Благодаря!

ответ

1

Я нашел ответ.

x = [0 0 0 1 1 1 1 3 2 2 2 3 3 3 3 5 5 5 5]; 
find(x==2 | x==3 | x==5, 1) 
+5

Чтобы сделать его более общим, вы можете использовать 'v = [2 3 5]; find (ismember (x, v), 1) ' –

+2

@ LuisMendo, который должен был быть ответом! – rayryeng

+1

@Tyler рассмотрите возможность использования второго выхода 'max'. Я думаю, что это будет более эффективно. – rayryeng

Смежные вопросы