
=
interp1(x,y,xi,method)
已知样本点坐标x,y,求xi处的函数值yi,插值方法是method
method有以下几种:
'nearest'邻近点插值
'linear'线性插值(默认)
'spline'三次样条函数插值
'cubic'三次函数插值
常用的是'spline'和'cubic'
例子:
x
=
0:10
y
=
sin(x)
xi
=
0:.25:10
yi
=
interp1(x,y,xi,'spline')
plot(x,y,'o',xi,yi)
function yh=lagrange (x,y,xh)n = length(x)
m = length(xh)
yh = zeros(1,m)
c1 = ones(n-1,1)
c2 = ones(1,m)
for i=1:n
xp = x([1:i-1 i+1:n])
yh = yh + y(i)*prod((c1*xh-xp'*c2)./(x(i)-xp'*c2))
end
注:该程序只可一次计算实现一个插值计算。可实现多个插值计算的程序如下:
function yh=lagrange(x,y,xh)
n = length(x)
m = length(xh)
x = x(:)
y = y(:)
xh = xh(:)
yh = zeros(m,1)
c1 = ones(1,n-1)
c2 = ones(m,1)
for i=1:n,
xp = x([1:i-1 i+1:n])
yh = yh + y(i) * prod((xh*c1-c2*xp')./(c2*(x(i)*c1-xp')),2)
end
具体代码如下所示:
x=0:2:4*pi
y=sin(x).*exp(-x/5)
plot(x,y,'k*')
hold on
xi=0:0.1:4*pi
y1=interp1(x,y,xi,'linear')
y2=interp1(x,y,xi,'spline')
y3=interp1(x,y,xi,'cubic')
pp=polyfit(x,y,6)
y4=polyval(pp,xi)
plot(xi,y1,'b-')
plot(xi,y2,'m--')
plot(xi,y3,'c.-')
plot(xi,y4,'g:')
legend('raw data','linear','spline','cubic','polyfit')
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)