如何利用matlab实现多种插值

如何利用matlab实现多种插值,第1张

利用matlab实现多种插值

用matlab自带的多种功能进行常用插值(样条插值,hermite插值,三次差值)呢?在完成一些习题后,我的总结如下:

1如何实现三次样条插值(spline插值)

特点:连续三次曲线逼近,最高次数为三次

法1:spline

x=[0,1,2,3,4,5,6,7,8,9,10]

y=[0,079,153,219,271,303,327,289,306,319,329];

进行三次样条插值

xx=0:025:10; 取好绘图取值点

yy=spline(x,y,xx);

plot(x,y,’o’,xx,yy); 绘制图像

那么如何获得插值函数?且如果三次样条插值有边界条件时,应如何拟合插值函数?此时应采取法2

法2:csape

pp=csape(x,y,'complete',[0,00]);

disp(ppcoefs);

complete表示给定边界条件为一阶导数,[0,0]便是两端点一阶导数为0常用的参数还有:

'second',给定边界二阶导数

'variational',自然样条(边界二阶导数为0)

运行结果:COEFS的含义是在Xi-Xi+1区间上的多项式是,例如COEFS数组第一行的意思是在X=0到X=1的区间上时表达式是-62652(X-0)^3+09697(X-0)^1+05;同理,可以得到在不同区间上的拟合函数

-62652 00000 09697 05000

18813 -09398 09227 05477

-04600 -04318 07992 06245

21442 -05146 07424 06708

绘制图像:xi=1:025:10;

yi=ppval(pp,xi);

plot(x,y,'o',xi,yi);

matlab通用的插值函数为interp1,通过改变interp1的method参数,可以实现不同的插值方式。但spline函数与interp1函数在实现样条插值时,均无法在规定边界条件的情况下进行插值,此时要用到csape,csape的complete,second参数即可满足常用边界条件需求。如果需要拟合出具体的函数,则用yicoefs的形式,yi为插值点的拟合值。最后,使用plot函数绘制拟合函数图像。

使用Lagrange 插值多项式的方法:

首先把下面的代码复制到M文件中,保存成lagran

function [C,L]=lagran(X,Y)

% input - X is a vector that contains a list of abscissas

% - Y is a vector that contains a list of ordinates

% output - C is a matrix that contains the coefficients of the lagrange interpolatory polynomial

%- L is a matrix that contains the lagrange coefficients polynomial

w=length(X);

n=w-1;

L=zeros(w,w);

for k=1:n+1

V=1;

for j=1:n+1

if k~=j

V=conv(V,poly(X(j)))/(X(k)-X(j));

end

end

L(k,:)=V;

end

C=YL;

然后在命令窗口中输入以下内容:

x=[0 025 05 075 1];

y=[0 03104 06177 07886 1];

lagran(x,y)

ans =

33088 -63851 33164 07599 0

得到的数据就是多项式各项的系数,注意最后一个是常数项,即x^0,

所以表达式为:f=33088x^4-63851x^3+33164x^2 +07599x

求面积就是积分求解

>> f=@(x)33088x^4-63851x^3+33164x^2 +07599x;

>> quad(f,0,1)

ans =

05509

这些点肯定是通过这个多项式的!

a=[591 593 594 596 598];

b=[032 036 023 025 046];

c=interp1(a,b,592)

结果:

c =

03400

当然,默认是线性插值,你可以加一个参数来改变插值方式:

c2=interp1(a,b,592,'spline') %样条插值

下面是所有可选的:

'nearest' Nearest neighbor interpolation

'linear' Linear interpolation (default)

'spline' Cubic spline interpolation

'pchip' Piecewise cubic Hermite interpolation

'cubic' (Same as 'pchip')

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)

以上就是关于如何利用matlab实现多种插值全部的内容,包括:如何利用matlab实现多种插值、求一段matlab插值程序、如何用matlab实现一维插值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9486975.html

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

发表评论

登录后才能评论

评论列表(0条)

保存