Как вернуть индексы всех четных записей в Matlab

#matlab

Вопрос:

учитывая вектор v, я должен найти индексы idxeven всех четных записей и вернуть их в виде вектора.

 v = [1 2 6 4 8 3 14 17 pi]
 

и я хочу вернуться:

 idxeven = [2 3 4 5 7]
 

Я пробовал idxeven=find(v) , но он просто возвращает индексы в виде вектора. Любая помощь будет признательна.

Комментарии:

1. Ладно, значит, ты пытался idxeven=find(v) . Что, если бы вы попробовали idxeven=find(evenv) «где evenv 1 только где v даже» и 0 «иначе»?

Ответ №1:

k = find(X) возвращает вектор, содержащий линейные индексы каждого ненулевого элемента в массиве X.

сначала создайте массив X так, чтобы для четного числа в v X было равно единице, а для остальных-нулю :

 X=(mod(v,2)==0);
 

затем используйте find для поиска нужных индексов :

 idxeven=find(X);