Как сделать сплайн-интерполяцию с определенным наклоном только на одном конце? - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть некоторые данные, которые я хотел бы интерполировать, используя кубический сплайн в Matlab. Мои данные монотонно растут, но результат сплайна по умолчанию имеет большую нисходящую кривую, которая падает ниже нуля.

Я вижу, что MatLab позволяет мне зажимать концы с заданным наклоном, но требует наклона на обоих концах. Есть ли способ зафиксировать только первую точку с нулевым уклоном и оставить ее не фиксированной? Любые ответы, которые я нахожу в Интернете, похоже, требуют, чтобы оба конца были зажаты.

Каждый набор данных - это всего три точки (одна в 0, затем другая в x = 2 и другая в x = 3), и они должны соответствовать приблизительно кубической кривой. Мы хотим использовать результирующую кривую для экстраполяции точек в x = 1, 4, 5, 6, поэтому мы не хотим применять произвольный конечный наклон к сплайну, который, очевидно, лишит законной силы наши экстраполяции.

На данный момент просто с помощью функции сплайна: YXq = interp1(s.amps, s.force, Xq, 'spline');

Я могу зажать оба конца следующим образом, но я хочу установить только начальный наклон: YXq = interp1(s.amps, [0; s.force; NO_END_SLOPE], Xq, 'spline');

...