Например, матрица 3x3 и список точек:
Код: Выделить всё
# x, y, value
points = [(0,0,0), (2,0,0), (0,2,3), (2,1,1.5)]
Код: Выделить всё
0, ?, 0,
?, ?, 1.5,
3, ?, ?,
Код: Выделить всё
0, 0, 0,
1.5, 1.5, 1.5,
3, 3, 3,
Я попробовал библиотеку libInterpolate, но он не поддерживает произвольное количество точек:
Формат данных интерполятора не поддерживается. Контейнеры данных
x, y и z должны иметь одинаковую длину или длина контейнера z
должна быть равна произведению длин контейнеров
x и y. .
Код: Выделить всё
_2D::BilinearInterpolator interp;
vector X = { 0, 2, };
vector Y = { 0, 1, 2, };
vector Z = { 0, 0, 3, 1.5, };
interp.setData(X.begin(), X.end(), Y.begin(), Y.end(), Z.begin(), Z.end());
Я знаю, что в scipy.interpolate есть функция Griddata, но это очень медленно, и я не хочу использовать scipy.
Подробнее здесь: https://stackoverflow.com/questions/785 ... a-2d-plane