matlab interp1

来源:百度知道 编辑:UC知道 时间:2024/05/28 14:07:29
interp1里面的spline做三次样条插值有个疑问
就是为什么这个函数不要边界条件也能做出了
我的题目中给出了第一类边界条件,不会用不到吧??

三次样条插值直接用spline函数做。
边界条件加在y的首尾,第一个表示y'(x0),最后一个表示y'(xt)。
如果不加边界条件,默认是not-a-knot边界条件(注意不是自然边界条件)
自然边界条件的插值要用csape函数才能得到。
如果用interp1,则只能使用spline函数的默认边界条件,即not-a-knot条件。

下面是例子
x=0:3:9;
y=x.*cos(x);
xx=linspace(0,9);
plot(x,y,'o');%样本点
hold on;
plot(xx,interp1(x,y,xx,'spline'),'r');%interp1只能使用默认边界条件
plot(xx,spline(x,[0 y 0],xx),'r:');%spline可以使用第一类边界条件,这里y'(0)=y'(9)=0
pp=csape(x,y,'second');
plot(xx,fnval(pp,xx))%第二类边界条件要用csape做,这里自然边界条件
legend('样本点','默认边界条件','一阶导为0','自然边界条件','location','south')

可以给第一类边界条件
只要Y的值你给的比X多两个,他会把Y的第一和最后一个值看做X相对于的第一和最后一个位置处的斜率,Y剩下的数和X的刚好一一对应