Scilab 中非严格递增 x 的三次样条或多项式插值

Cubic spline or polynomial interpolation of non strictly increasing x in Scilab

我有一组xy点:

x = [1 2 3 3 2]
y = [1 1 2 3 2]

我想对这些点进行插值。我的问题是,interp1() or splin() 需要严格递增的 x。

如何获得这样的插值:

x = [1 2 3 4 5]
y = [1 1 2 3 2]
xx = linspace(1, 5, 100);
yy2 = interp1(x, y, xx, 'spline');
plot(xx',yy2)
scatter(x, y)

但是 x 不增加?

我不仅需要绘图,还需要获取给定 x 和 y 的插值。

这是一条参数化曲线,您必须考虑第三个向量 t(参数值)并计算两条样条曲线。您可以通过更改第三个参数来更改样条类型(请参阅 splin 帮助页面):

x = [1 2 3 3 2];
y = [1 1 2 3 2];
t = 1:5;
dx = splin(t,x,"natural");
dy = splin(t,x,"natural");
tt=linspace(t(1),t($),1000);
plot(interp(tt,t,x,dx),interp(tt,t,y,dy),x,y,'o')