8
puedo buscar la posición de un valor, es decir 45, en un vector de 'datos' con el operador '==' y ') de encontrar (' función:Octave/Matlab: vectorising '==' operator?
data = [ 71 65 23 45 34 12 21 34 52 ];
value = 45;
find (data == value)
ans = 4
¿Hay una manera de hacerlo el mismo para varios valores sin necesidad de utilizar un bucle, es decir, me gustaría obtener [4 5 7] en una sola llamada:
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
De hecho, esto es mucho más rápido que un método que estaba a punto de proponer: 'find (any (bsxfun (@eq, data, values '), 1))'. usando 'tic'' toc' Obtengo que 'ismember' es x5 veces ** más rápido ** que mi método' bsxfun @ eq'. ¡Bien hecho Bill! – Shai