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')
我有一组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')