Числовая линейная интерполяция на Delphi

Мне нужно было сделать простую числовую линейную интерполяцию в Delphi, я думал о реализации функции, но потом подумал лучше, и я думаю, что это уже должна быть какая-то библиотека. Я ничего не нашел в Google.

Моя проблема проста, у меня есть набор данных с данными X и Y и другие новые данные X набора данных (Xb), которые будут основой для поиска новых данных Y (Yin), интерполированных.

В R, например, есть функция approx это легко достигается Эта функция также позволяет использовать длину Xb любого размера.

Yin <- approx (X, Y, Xb, method = "linear")$y

Есть какая-то статистическая библиотека для этого в Delphi? Или продолжайте писать мою функцию (на основе approx)?

1 ответ

Решение

Линейная интерполяция 1D-данных очень проста:

  • Найти такой индекс в X-массиве, что X[i] <= Xb < X[i+1]

(бинарный поиск для случая произвольного доступа, линейный поиск для случая пошагового изменения Xb)

  • подсчитывать

    Yb = Y[i] + (Y[i+1] - Y[i]) * (Xb - X[i]) / (X[i+1] - X[i])
    
Другие вопросы по тегам