MATLAB自带插值函数

MATLAB自带插值函数一 interp11 函数简介 MATLAB 中的插值函数为 interp1 其调用格式为 yi interp1 x y xi method 其中 x y 为初始插值点 xi 为给定的插值点 yi 为在被插值点 xi 处的插值结果 method 表示采用的插值方法 MATLAB 提供的插值方法有几种 nearest 是最邻近插值 linear 线性插值 sp

一、interp1

1、函数简介

   MATLAB中的插值函数为interp1,其调用格式为:yi= interp1(x,y,xi,’method’),

   其中x,y为初始插值点,xi为给定的插值点,yi为在被插值点xi处的插值结果。

2、用法示例

% 绘制散点图 clc clear close tem=[2 2 0 2 2 2 2 3 5 7 9 10 11 12 12 11 10 9 7 7 6 6 5 5]; time=1:24; plot(time,tem,'o') hold on % 第一种用法 xq=1:0.1:24; vq=interp1(time,tem,xq); plot(xq,vq) %绘制插值曲线 close %第二种用法 % linear 线形(默认) % nearest 临近点 % next 下一个 % previous 前一个 % pchip 保形分段三次插值 % cubic % v5cubic % spline 三次方样条数据插值 % 线性 subplot(2,3,1) xq=1:0.5:24; vq=interp1(time,tem,xq,'linear'); plot(xq,vq,'*') title('linear') % 临近点 subplot(2,3,2) xq=1:0.5:24; vq=interp1(time,tem,xq,'nearest'); plot(xq,vq,'*') title('nearest') % next subplot(2,3,3) xq=1:0.5:24; vq=interp1(time,tem,xq,'next'); plot(xq,vq,'*') title('next') % previous subplot(2,3,4) xq=1:0.5:24; vq=interp1(time,tem,xq,'previous'); plot(xq,vq,'*') title('previous') % pchip subplot(2,3,5) xq=1:0.5:24; vq=interp1(time,tem,xq,'pchip'); plot(xq,vq,'*') title('pchip') % spline subplot(2,3,6) xq=1:0.5:24; vq=interp1(time,tem,xq,'spline'); plot(xq,vq,'*') title('spline'); close % 第三种 取出插值多项式的系数 %v = ppval(pp,xq) 在查询点 xq 处计算分段多项式 pp。 x=0:0.5:2*pi; y=sin(x); p=interp1(x,y,'spline','pp'); %% 返回各个分段插值多项式p的系数 yy=ppval(p,linspace(0,2*pi,101)); plot(x,y,'o',linspace(0,2*pi,101),yy); % 第四种 x=0:0.5:2*pi; y=sin(x); xi=-1:0.2:7; p=interp1(x,y,xi,'spline') ;%插值区间xi超出样本区间x自动外推 p=interp1(x,y,xi,'linear','extrap'); %加上'extrap'自动外推 plot(x,y,'o',xi,p); p=interp1(x,y,xi,'next','extrap'); %加上'extrap'自动外推 p=interp1(x,y,xi,'nearest',9);%令超出范围的数值为9

二、spline三次样条插值

1、函数简介

MATLAB中的插值函数为interp1,其调用格式为:yi= spline(x,y,xi),

其中x,y为初始插值点,xi为给定的插值点,yi为在被插值点xi处的插值结果。

2、用法示例

%第一种 单条曲线插值 x=0:0.5:2*pi; y=sin(x); xx=0:0.1:2*pi; yy=spline(x,y,xx); plot(x,y,'o',xx,yy,'-') close % 第二种 多条曲线插值 x=0:0.5:2*pi; y=[sin(x);cos(x)]; xx=0:0.1:2*pi; yy=spline(x,y,xx); plot(x,y,'o',xx,yy,'-') % 第三种 取出插值多项式的系数 x=0:0.5:2*pi; y=sin(x); p=spline(x,y); %返回各个分段插值多项式p的系数 xx=0:0.1:2*pi; yy=ppval(p,xx); %v = ppval(pp,xq) 在查询点 xx 处计算分段多项式 p。 plot(x,y,'o',xx,yy) 

三、pchip 分段三次 Hermite 插值多项式

1、函数简介

其函数使用方法跟以上的类似,我们这里直接上代码。

2、函数代码

%第一种 x=0:0.5:2*pi; y=sin(x); xx=0:0.1:2*pi; yy=pchip(x,y,xx); plot(x,y,'o',xx,yy,'-') % 第二种 取出插值多项式的系数 x=0:0.5:2*pi; y=sin(x); p=pchip(x,y); xx=0:0.1:2*pi; yy=ppval(p,xx); %v = ppval(pp,xq) 在查询点 xx 处计算分段多项式 pp。 plot(x,y,'o',xx,yy)

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233962.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号