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?
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);
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]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With