Octave / Matlab:vectorising'=='运算符?

时间:2011-03-03 16:20:13

标签: matlab operators find octave vectorization

我可以使用'=='运算符和'find()'函数在向量'data'中查找值的位置,即45的位置:

data = [ 71 65 23 45 34 12 21 34 52 ];
value = 45;

find (data == value)
ans =  4

有没有办法在不使用循环的情况下为多个值执行相同操作,即我希望在一次调用中得到[4 5 7]:

values = [ 45 34 21 ];
find (data == values)
error: mx_el_eq: nonconformant arguments (op1 is 1x9, op2 is 1x3)
error: evaluating argument list element number 1
error: evaluating argument list element number 1

1 个答案:

答案 0 :(得分:14)

尝试ismember功能:

data = [ 71 65 23 45 34 12 21 34 52 ];
values = [ 45 34 21 ];

find(ismember(data, values))

,并提供:

ans =

 4     5     7     8