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?
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]
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);