2010-08-29 6 views

Respuesta

9

No estoy seguro de lo que quiere decir con la entrada "exacta". Esto le dará índices de todos los valores mayores que x:

indices = find(a > x); 

Suponiendo a ya está ordenado, esto le dará el índice de la primera (es decir, el valor más pequeño mayor que x):

index = find(a > x,1); 
1

Si desea calcular estas posiciones para varios valores de x, usted será mejor usar histc en lugar de bucle a través de todos los valores de x, como en términos de complejidad histc habrá O(n*log(n)), mientras que el enfoque de bucle será O(n^2):

[~,I] = histc(x, [-Inf; a(:); Inf]); 
I(x==inf) = numel(a)+1; 

Esto funcionará para a ordenados y arbitraria x. Como un ejemplo:

a = 1:10; 
x = [5.5, 0.1, 2.3]; 

producirá:

I = [6  1  3] 
Cuestiones relacionadas