Проблема с форматированием данных x и y в функции bspline от gekko

#2d #interpolation #bspline #gekko

#2d #интерполяция #bspline #gekko

Вопрос:

Я пытаюсь выполнить 2D-интерполяцию в GEKKO и получить данные x, y и z. Однако, когда я ввожу их в функцию bspline, я получаю сообщение об ошибке «x_data и y_data должны строго увеличиваться». Как вы вычисляете узлы и коэффициенты для определения поверхности?

Я попытался использовать функцию интерполяции scipy для создания данных для сплющенной сетки между данными x и y с данными z и отсортировать их так, чтобы x увеличивался, а y перебирал увеличивающиеся значения, но это все равно приводит к уменьшению значений y.

Ответ №1:

После просмотра http://apmonitor.com/wiki/index.php/Main/ObjectBspline , я понял, что xdata и ydata были узлами bspline, а значения z были коэффициентами. Таким образом, эти значения могут быть получены из scipy.interpolate.bisplrep(xdata,ydata,zdata), который возвращает список, содержащий узлы и коэффициенты для определения поверхности. Затем они могут быть введены в функцию bspline как m.bspline(xtest, ytest, ztest, tck [0], tck [1], tck [2], data=False)

Комментарии:

1. Вы можете загружать узлы и коэффициенты, когда data=False . Когда data=True, он создает узлы и коэффициенты bspline для вас. Вот пример использования необработанных данных: apmonitor.com/wiki/index.php/Main /…