任何内置的Matlab函数来查找某个数字是否位于向量的两个成员之间?

时间:2012-09-03 21:44:39

标签: matlab time-complexity

如果数字a位于x(i)和x(i + 1)之间,它应返回最低索引i。我知道写一个能做到这一点的函数并不难,但是有没有内置的Matlab函数呢?

假设矢量元素已经排序,那么我猜是一个简单的搜索O(logn)但如果元素没有经过排序而没有排序,有没有更好的方法呢?

提前致谢!

2 个答案:

答案 0 :(得分:3)

逻辑指数非常适合这种比较:

x = [6 2 6 7 3 5];
a = 4;
find(a > x(1:end-1) & a < x(2:end), 1)
ans =  2

答案 1 :(得分:0)

尝试

  a=rand(1);
  b=rand(1,10);
  c=a-b;
  find(c(2:end).*c(1:end-1)<0,1)