Values closest to a number

1 visualización (últimos 30 días)
cfjunior
cfjunior el 27 de Abr. de 2013
How do I find the two closest numbers from a number in a vector column? For example, suppose I have:
A = [2 3 5 6 9 10 23 45 100]';
If the number I'm seaching is 7, my requested answer would be 6 and 9.
  1 comentario
bym
bym el 27 de Abr. de 2013
why wouldn't it return 5 & 6? 5 is as close as 9

Iniciar sesión para comentar.

Respuesta aceptada

Wayne King
Wayne King el 27 de Abr. de 2013
Editada: Wayne King el 27 de Abr. de 2013
It looks like you are looking for the closest numbers where one is below 7 and one is above. If that is the case.
A = [2 3 5 6 9 10 23 45 100]';
num = 7;
closest_below = max(A(A<num));
closest_above = min(A(A>num));
because otherwise, 5 is just as close to 7 as 9 is.
  1 comentario
cfjunior
cfjunior el 27 de Abr. de 2013
Yes, thats what I need!! Thanks a lot!!

Iniciar sesión para comentar.

Más respuestas (1)

the cyclist
the cyclist el 27 de Abr. de 2013
There are many possible ways to do this. Here is one way.
A = [2 3 5 6 9 10 23 45 100]';
v = 7;
idx_hi = find(A>7,1,'first');
twoClosest = A([idx_hi-1,idx_hi])
I assumed that your A vector was sorted, that all values are unique, etc. You want to be careful if these conditions are not met.

Categorías

Más información sobre Multidimensional Arrays en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by