finding index of several values within a vector efficiently

I am trying to find the index of 'several' values within an array/vector. For instance, I have a vector [1 2 5] and matrix X=[1 5 4 3 2]. I want it to return [1 5 2]. I could write a for loop that finds each values in that vector such as find(X==1), then find(X==2) ..., but I was hoping there is a vectorized way to do this. Thanks.

 採用された回答

the cyclist
the cyclist 2012 年 12 月 2 日

1 投票

v = [1 2 5];
X = [1 5 4 3 2];
[tf loc] = ismember(v,X);
"loc" is the vector you want.

その他の回答 (1 件)

Matt Fig
Matt Fig 2012 年 12 月 2 日
編集済み: Matt Fig 2012 年 12 月 2 日

0 投票

idx = [1 2 5];
X = [1 5 4 3 2];
vals = X(idx) % linear indexing.

2 件のコメント

the cyclist
the cyclist 2012 年 12 月 2 日
If I am interpreting Jimmian's question correctly, this method only gives the correct answer to the example because of a numerical coincidence. For example, if
X = [0 0 0 0 0 1 5 4 3 2]
then I think he wants the output to be
loc = [6 10 7]
and not
[0 0 0].
Matt Fig
Matt Fig 2012 年 12 月 2 日
編集済み: Matt Fig 2012 年 12 月 2 日
Exactly how I interpreted your answer when I read it (works because of a coincidence).
:-)
It would be nice to have an example from OP that is unambiguous......

サインインしてコメントする。

カテゴリ

ヘルプ センター および File Exchange で MATLAB についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by