如何用MATLAB 编写interpl插值函数

如何用MATLAB 编写interpl插值函数,第1张

yi

=

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')


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7798185.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-10
下一篇2023-04-10

发表评论

登录后才能评论

评论列表(0条)

    保存