Если вы хотите вычислить эти позиции для нескольких значений x
, вам будет лучше использовать histc
вместо циклического перебора всех значений x
, так как с точки зрения сложности histc
будет O(n*log(n))
, в то время как циклический подход будет O(n^2)
:
[~,I] = histc(x, [-Inf; a(:); Inf]);
I(x==inf) = numel(a)+1;
Это будет работать для отсортированных a
и произвольных x
. Как пример:
a = 1:10;
x = [5.5, 0.1, 2.3];
даст:
I = [6 1 3]