How to find the element of a number if that number were to be placed in an ordered list?

2 ビュー (過去 30 日間)
For example:
list = (0:10)
number= 2.5
the element it is in-between is 3 and 4
What is the most efficient way of finding where 2.5 would lie in that list and which elements it would be in-between?
Is there a better way than doing a for loop?
for i = 1:length(list)
if number > list(length(list))
fprintf('it is greater than any the numbers')
end
if number == list(i)
fprintf('it is element %d',i)
end
if number < list(length(list))
if number > list(i)
if number < list(i+1)
fprintf('it is between element %d and %d ',i,i+1 )
end
end
end
end

採用された回答

Stephen23
Stephen23 2020 年 2 月 22 日
The robust solution:
>> ida = find(list<number,1,'last')
ida = 3
>> idb = find(list>number,1,'first')
idb = 4

その他の回答 (1 件)

madhan ravi
madhan ravi 2020 年 2 月 22 日
Between = [find(ismember(list1,fix(2.5))), find(ismember(list1,ceil(2.5)))]
  5 件のコメント
madhan ravi
madhan ravi 2020 年 2 月 22 日
Oops thank you for indicating Stephen.
arthurk
arthurk 2020 年 2 月 22 日
I'm trying to find the most efficient way. As you can see from my code I do have knowledge of using operators, however I'm trying to make it efficiently as possible without expending many lines of code.

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

カテゴリ

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

タグ

製品


リリース

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by