确定一个数字落入哪个范围

Ann*_*ann 4 matlab

给定一定范围的范围:

a =

    32225   52259
    52260   70794
    70795   91459
    91460   95409
Run Code Online (Sandbox Code Playgroud)

并且单个值x = 61450- 有没有办法确定x在哪个范围内下降而不使用循环来检查每种可能性?在这种情况下,答案是261450属于第二范围.

dro*_*rco 9

使用

res = find(x >= a(1,:) & x < a(2,:));
Run Code Online (Sandbox Code Playgroud)

  • 我想看一个计时赛,因为我怀疑@LuisMendo的建议更快. (4认同)
  • 我建议在其中一方添加`=`. (3认同)
  • @LuisMendo你赢了! (2认同)

Car*_*oft 5

好的,做了一个:-).

foo = [1;round(1e5*rand(1000,1))];
foop = [ foo(2:end)+1;1e6];

x = 1e5*rand(1,1);
tic
for j = 1:1000

    bardro = find(x >= foo & x <= foop);
end
tocdro = toc;

tic;
for j = 1:1000
    barlui = sum(x >=foo);
end
toclui  = toc;

>> tocdro
tocdro =
    0.0113
>> toclui
toclui =
    0.0047
Run Code Online (Sandbox Code Playgroud)

我们有一个胜利者!