第1个回答 2019-06-04
三次样条插值直接用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')
第3个回答 2015-11-07
figure表示新建一个图窗口,以免后续的绘图语句覆盖原图;hold on表示在原图的基础上绘制新的图像
参考代码
clc
clear all
close all
tic
n = 10; % 数据点数
x = 1:n; % 横坐标
y1 = randi(10, 1, n); % 纵坐标
y2 = randi(10, 1, n); % 纵坐标
figure
plot(x, y1);
figure % 想要看hold on的效果,请将改行注释掉,并取消下一行的注释
% hold on
plot(x, y2, 'r');
toc