Для вектора a = [1,2, 3.2, 4, 5] и элемента x = 3 В векторе a как найти точную запись, которая больше x? - PullRequest
7 голосов
/ 29 августа 2010

Учитывая вектор a = [1,2, 3.2, 4, 5] и элемент x = 3 В векторе a как найти точную запись, которая больше x?

Ответы [ 2 ]

11 голосов
/ 29 августа 2010

Я не уверен, что вы подразумеваете под "точной" записью. Это даст вам индексы все значения больше x:

indices = find(a > x);

Предполагая, что a уже отсортировано, это даст вам индекс первого (то есть наименьшее значение больше x):

index = find(a > x,1);
1 голос
/ 21 января 2015

Если вы хотите вычислить эти позиции для нескольких значений 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...