Values closest to a number
3 次查看(过去 30 天)
显示 更早的评论
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.
采纳的回答
Wayne King
2013-4-27
编辑:Wayne King
2013-4-27
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 个)
the cyclist
2013-4-27
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.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Multidimensional Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!