如何利用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函数绘制拟合函数图像。

n=-1:3; %n=-1,0,1,2,3

x=1:5; %x=1,2,,5

k=0:500; %k=0,1,,500

w=(pi/500)k; %w=pi/500k,pi是31415926

X=x(exp(-jpi/500))^(n'k); %(^)中点的意思是元素 *** 作,^是次方, n' 是吧n置换 ,j是虚数

magX=abs(X); %abs(x)就是数学中的|X|

angX=angle(X); %angle(X)是找角度的

subplot(2,1,1) %排列想成矩阵,那么就有2行一列,这个图是第一个位置

plot(w/pi,magX); %画图(x轴,y轴)

title('幅度响应'); %标题

grid; %加格子

ylabel('幅度'); %y轴标题

xlabel('以\pi为单位的频率'); %x轴标题

subplot(2,1,2) %第二张图

plot(w/pi,angX)

title('相位响应');

grid;

ylabel('相位/\pi');

xlabel('以\pi为单位的频率');

%by dynamic

%see also >

matlab中使用插值函数

插值函数(the function of interpolation )

interp1

调用函数的格式(Syntax)

yi = interp1(x,Y,xi)

yi = interp1(Y,xi)

yi = interp1(x,Y,xi,method)

yi = interp1(x,Y,xi,method,'extrap')

yi = interp1(x,Y,xi,method,extrapval)

pp = interp1(x,Y,method,'pp')

调用格式说明(Description)

yi = interp1(x,Y,xi) 返回矢量X和Y决定的根据输入的节点xi时对应的y的值矢量Y是矢量X的一个函数映射

如果Y是一个矩阵,那么插值结果是一个对应的矩阵

[===================================================

yi = interp1(x,Y,xi) returns vector yi containing elements corresponding to the elements of xi and determined by interpolation within vectors x and Y The vector x specifies the points at which the data Y is given If Y is a matrix, then the interpolation is performed for each column of Y and yi is length(xi)-by-size(Y,2)

===================================================]

yi = interp1(x,Y,xi,method)插值中可以使用的方法: 插值方法 说明 nearest 临近的两点插值 linear 线性插值(默认) spline 三次样条插值 pchip 分段三次Hermite插值多项式插值 cubic (作用于pchip相同) v5cubic 用matlab5版本中断三次样条插值 [====================================================

yi = interp1(x,Y,xi,method) interpolates using alternative methods:

methodDescription

nearestNearest neighbor interpolation

linearLinear interpolation (default)

splinesplineCubic spline interpolation

pchipPiecewise cubic Hermite interpolation

cubic(Same as 'pchip')

v5cubicCubic interpolation used in MATLAB 5

======================================================]

简单程序示例

>>x=[00 01 0195 03 0401 05];

>>y=[039849 039695 039142 038138 036812 035206];

>>plot(x,y);

>>T=interp1(x,y,25,'linear') %线性插值

(返回结果T=03862)

>> T=interp1(x,y,25,'nearest') % 两点插值

(返回结果T=03814)

>>T=interp1(x,y,25,'spline')  % 三次样条插值

(返回结果T =03867)

>>T=interp1(x,y,25,'cubic') %三次插值

(返回结果T =03867)

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存