2016-03-15 61 views
4

给定范围的一组数:确定哪些范围内的数落入

a = 

    32225 52259 
    52260 70794 
    70795 91459 
    91460 95409 

和单个值x = 61450 - 有一种方法来确定其内范围X落在而不使用循环来检查每个可能性?在这种情况下的答案是2,因为61450落在第二范围内。

回答

9

使用

res = find(x >= a(1,:) & x < a(2,:)); 
+3

我会建议在其中一边添加'='。 – Adiel

+0

@Adiel,感谢您的评论,我同意 – drorco

+1

@Anna如果范围总是增加并且连续,'result = sum(x> = a(:,1));'这也适用 –

5

OK,做一个:-)。

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 

我们赢了!

相关问题