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 1796
感情败类
感情败类 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]
    

提交回复
热议问题