Подтвердить что ты не робот

Как найти значения, близкие к заданному значению?

У меня data = [1 1.2 1.3 1.5 1.8]

Я хочу найти самые близкие значения до и после данных для этой точки, b = 1.23

Как это сделать?

4b9b3361

Ответ 1

Вот еще один метод. Вектор data не нужно сортировать, а b может быть положительным или отрицательным.

[~,I] = min(abs(data-b));
c = data(I);

Ответ 2

если данные отсортированы, вы можете использовать find:

i_lower  = find(data <= b,1,'last');
i_higher = find(data >= b,1,'first');

lower_than_b  = data(i_lower)
higher_than_b = data(i_higher)

Ответ 3

Как насчет min(abs(data - b))?

Ответ 4

data = [1 1.2 1.3 1.5 1.8]

b = 1.23

find(abs(data-b)==min(abs(data-b)))

Ответ 5

Этот метод обобщает Doubt-ответ на случай, когда в b есть несколько элементов, которые вы ищете:

ind=knnsearch(data',b) c=data(ind)

который возвращает индекс (или массив индексов), ind, ближайшего элемента (или элементов) в data к элементам, указанным в b.

Обратите внимание, что данные транспонируются, потому что набор, который нужно искать, должен быть вектором столбца. Если бы было несколько элементов, то он также должен быть вектором столбца.

Кроме того, этот метод может быть обобщен, чтобы дать 2, 3, 4... ближайшим соседям (см. документацию).

Он также обобщает случай, когда данные являются более крупными (если d размеры, то test и b будут иметь столбцы d).