Given a vector a=[1,2, 3.2, 4, 5] and an element x=3 In vector a, how to find the exact entry which is bigger than x?

前端 未结 2 1785
感情败类
感情败类 2020-12-11 17:08

Given a vector a=[1,2, 3.2, 4, 5] and an element x=3 In vector a, how to find the exact entry which is bigger than x?

相关标签:
2条回答
  • 2020-12-11 17:55

    If you want to compute these positions for multiple values of x, you will be better off using histc instead of looping through all values of x, as in terms of complexity histc will be O(n*log(n)), while the loop approach will be O(n^2):

    [~,I] = histc(x, [-Inf; a(:); Inf]);
    I(x==inf) = numel(a)+1;
    

    This will work for sorted a and arbitrary x. As an example:

    a = 1:10;
    x = [5.5, 0.1, 2.3];
    

    Will yield:

    I = [6     1     3]
    
    0 讨论(0)
  • 2020-12-11 18:00

    I'm not sure what you mean by "exact" entry. This will give you indices of all the values greater than x:

    indices = find(a > x);
    

    Assuming a is already sorted, this will give you the index of the first one (i.e. the smallest value greater than x):

    index = find(a > x,1);
    
    0 讨论(0)
提交回复
热议问题