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

是否有任何内置的Matlab函数来确定某个数字是否位于向量的两个成员之间?,matlab,time-complexity,Matlab,Time Complexity,如果数字a位于x(i)和x(i+1)之间,它应该返回最低的索引i。我知道写一个函数来实现这一点并不难,但是有内置的Matlab函数吗 假设向量元素被排序,我想这将是一个简单的搜索O(logn),但是如果元素没有经过排序就没有排序,有没有更好的方法呢 提前谢谢 试试看 a=rand(1); b=rand(1,10); c=a-b; find(c(2:end).*c(1:end-1)<0,1) a=rand(1); b=兰特(1,10); c=a-b; 找到(c(2:end)

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

假设向量元素被排序,我想这将是一个简单的搜索O(logn),但是如果元素没有经过排序就没有排序,有没有更好的方法呢

提前谢谢

试试看

  a=rand(1);
  b=rand(1,10);
  c=a-b;
  find(c(2:end).*c(1:end-1)<0,1)
a=rand(1);
b=兰特(1,10);
c=a-b;
找到(c(2:end)。*c(1:end-1)Try

a=rand(1);
b=兰特(1,10);
c=a-b;

find(c(2:end)。*c(1:end-1)逻辑索引非常适合此类比较:

x = [6 2 6 7 3 5];
a = 4;
find(a > x(1:end-1) & a < x(2:end), 1)
ans =  2
x=[626735];
a=4;
查找(a>x(1:end-1)和a
逻辑索引非常适合此类比较:

x = [6 2 6 7 3 5];
a = 4;
find(a > x(1:end-1) & a < x(2:end), 1)
ans =  2
x=[626735];
a=4;
查找(a>x(1:end-1)和a
但是,如果存在多个特定的i值,并且这个条件成立,它该怎么办?编辑。感谢您指出!我认为您的要求还不够清楚。如果要搜索的向量是
[6,2,6,2,6,2]
问题中的数字是
4
您寻求的函数应该返回什么?但是,如果存在多个特定的i值,在这种情况下,它应该做什么?编辑。感谢您指出!我认为您的要求还不够清楚。如果要搜索的向量是
[6,2,6,2,6,2]
问题中的数字是
4
您寻求的函数应该返回什么?非常优雅。到目前为止不知道逻辑索引,完全错过了Matlab的强大工具。谢谢!非常优雅。到目前为止不知道逻辑索引,完全错过了Matlab的强大工具。谢谢!