微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我有一组 xy 点:

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

plot of the points

我想对这些点进行插值。我的问题是,interp1()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)

interp1 interpolation plot

但是 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,"natural");
tt=linspace(t(1),t($),1000);
plot(interp(tt,t,dx),interp(tt,y,dy),'o')

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。