Find the two nearest points from an array given a value
26 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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?
0 Kommentare
Akzeptierte Antwort
Daniel M
am 8 Okt. 2019
Bearbeitet: Daniel M
am 8 Okt. 2019
[~,k] = mink(abs(A-0.1400),2);
7 Kommentare
Daniel M
am 8 Okt. 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).
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!