У меня есть некоторые данные, которые я хотел бы интерполировать, используя кубический сплайн в 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');