Values closest to a number

4 ビュー (過去 30 日間)
cfjunior
cfjunior 2013 年 4 月 27 日
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 件のコメント
bym
bym 2013 年 4 月 27 日
why wouldn't it return 5 & 6? 5 is as close as 9

サインインしてコメントする。

採用された回答

Wayne King
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 件のコメント
cfjunior
cfjunior 2013 年 4 月 27 日
Yes, thats what I need!! Thanks a lot!!

サインインしてコメントする。

その他の回答 (1 件)

the cyclist
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.

カテゴリ

Help Center および File ExchangeMultidimensional Arrays についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by