# Find the two nearest points from an array given a value

33 views (last 30 days)
Nom on 8 Oct 2019
Commented: Nom on 8 Oct 2019
Hello,
Currently I have an 87x1 array called A.
A = 0.1334
0.1338
0.1348
0.1386
0.1444
0.1448
0.1452
0.1459
0.1469
0.1478
0.1488
I now have a value of 0.1400
What I want from A is the two nearest values to this number. In this case, it should be 0.1386 and 0.1444
I have the following code below which I have been trying to get to work:
k = dsearchn(A,0.1400)
This gives me 4 as the output which makes sense as the 4th row in array A has 0.1386 which is one of the closest.
However, how am I able to get the second closest of 0.1444?

Daniel M on 8 Oct 2019
Edited: Daniel M on 8 Oct 2019
[~,k] = mink(abs(A-0.1400),2);
Daniel M on 8 Oct 2019
Sorry, my hints were poor.
A = [0.1035
0.1062
0.1094
0.1121
0.1264
0.1334
0.1338
0.1165];
res = A-0.1165;
res2 = res;
% find closest below
res(res>=0) = nan;
[~,kNeg] = max(res);
% find closest above
res2(res2<0) = nan;
[~,kPos] = min(res2);
Note how I handled it for when one value is A equals x (you can choose differently if you wish).
Nom on 8 Oct 2019
Not at all, thank you for helping me out in this matter.
I apologize that I didn't catch on to the code, I really appreaciate this!

### Categories

Find more on Mathematics in Help Center and File Exchange

R2017b

### Community Treasure Hunt

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

Start Hunting!