## Values closest to a number

### cfjunior (view profile)

on 27 Apr 2013
Accepted Answer by Wayne King

### Wayne King (view profile)

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.

bym

### bym (view profile)

on 27 Apr 2013

why wouldn't it return 5 & 6? 5 is as close as 9

## Products

No products are associated with this question.

### Wayne King (view profile)

Answer by Wayne King

### Wayne King (view profile)

on 27 Apr 2013
Edited by Wayne King

### Wayne King (view profile)

on 27 Apr 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.

cfjunior

### cfjunior (view profile)

on 27 Apr 2013

Yes, thats what I need!! Thanks a lot!!

### the cyclist (view profile)

Answer by the cyclist

### the cyclist (view profile)

on 27 Apr 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.