一维插值(interp1)和二维插值(interp2)

一、一维插值

1.定义

插值:已知f(x)的N个数据点,f(x)不知道。根据N个数据点估计任意点的函数值f(x)。

2. interp1函数

调用格式: yi = interp1(x,y,xi,method)    其中x,y为已知的数据点,通常xi为比x更加密集的数据点,xi可以为标量、向量及数组。yi是数据点xi上的估计值;method是字符串变量,表示不同的插值方法,有下面四种可选:

method = 'nearest',最近邻插值法,插值点函数估计值为与该插值点最近的数据点函数值。例如xi(l)与x(n)最近,则xi(l)处的函数值估计yi(l)为y(n).

method = 'linear',线性插值法,根据相邻近数据点的线性函数估计落在该区域内插值数据点的函数值。例如,xi(l)在[x(n-1),x(n)],则xi(l)处的函数值估计yi(l)由(x(n-1), y(n-1))、(x(n), y(n))确定的线性函数得到。线性插值是interp1的默认选项。

method = 'spline',三次样条插值,这种方法在相邻数据点间建立三次多项式函数,根据该多项式函数确定插值数据点的函数值。例如,xi(l)属于[x(n-1),x(n)],则xi(l)处的函数值估计yi(l)由(x(n-1), y(n-1))、(x(n), y(n))确定的三次多项式得到。

method = ‘pchip’或'cubic',这两种方向是相同的,利用pchip函数分段的进行三次Hermite插值。例如,xi(l)属于[x(n-1),x(n)],则xi(l)处的函数值估计yi(l)由(x(n-1), y(n-1))、(x(n), y(n))确定的三次Hermite函数得到。


上面文字解释可能不清晰,下面让我来看看实例吧!


例子:f(x) = x^2 + 1 (x属于[0, 1]),现在f(x)未知,但是已知f(x)的6个采样点如下:(0,1), (0.2,1.04), (0.4, 1.16), (0.6,1.36), (0.8,1.64), (1,2)

x = 0:0.2:1;
y = x.^3 + 1;
plot(x,y)              % 真是曲线
hold on
xi = 0:0.05:1;
yi = interp1(x,y,xi,'linear');
plot(xi,yi,'r*')      %为插值数据点  
hold on
yi1 = interp1(x,y,xi,'nearest');
plot(xi,yi1,'g-')      %为插值数据点  可以看到邻近插值与真值差距很大
hold on
yi = interp1(x,y,xi,'spline');
stem(xi,yi)      %为插值数据点     样条效果也很好
注意:x,y的长度要相同。



二、二维插值

ZI = interp2(X,Y,Z,XI,YI,method)

二维插值跟以为插值大致相同,只是多了Z参数而已,method参照上面是一样的。

例子;

x= -3:1:3;
y = x;
[X,Y] = meshgrid(x,y);
Z = peaks(X,Y);
mesh(X,Y,Z)
figure;
xi = linspace(-3,3,100);
yi = xi;
[XI,YI] = meshgrid(xi,yi);
ZI = interp2(X,Y,Z,XI,YI,'cubic');
mesh(XI,YI,ZI)



  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值