interp1

1-D数据插值(表查找)

描述

实例

vq=interp1(x,v,xq)使用线性插值返回特定查询点处一维函数的插值。向量x包含样品点,和v包含相应的值,v(x)。矢量xq包含查询点的坐标。

如果您有多组数据在同一点坐标上采样,则可以通过v作为阵列。每列数组v包含一组不同的一维采样值。

实例

vq=interp1(x,v,xq,方法)指定替代插值方法:'线性',“最近的”,“下一个”,'以前的','pchip',“立方”,'v5cbic',“makima”, 或者“样条曲线”。默认方法为'线性'.

实例

vq=interp1(x,v,xq,方法,外推法)指定用于计算位于域之外的点的策略x设置外推法'extrap'当你想使用的时候方法推断算法。或者,您可以指定一个标量值,在这种情况下,interp1为域之外的所有点返回该值x.

实例

vq=interp1(v,xq)返回插值并假定一组默认采样点坐标。默认点是1.N哪里N取决于物体的形状v:

  • 当V是向量时,默认点是1:长度(v).

  • 当v为数组时,默认点为1:尺寸(v,1).

如果不关心点之间的绝对距离,请使用此语法。

vq=interp1(v,xq,方法)指定任何备用插值方法,并使用默认采样点。

vq=interp1(v,xq,方法,外推法)指定外推策略并使用默认采样点。

PP.=interp1(x,v,方法(“pp”)返回函数的分段多项式形式v(x)使用方法算法。

笔记

不建议使用此语法。请使用网格插值相反

例子

全部崩溃

定义采样点,x以及相应的样本值,v.

x=0:pi/4:2*pi;v=sin(x);

将查询点定义为在x.

xq=0:pi/16:2*pi;

插值在查询点处的功能并绘制结果。

图Vq1 = Interp1(x,v,xq);绘图(x,v,“o”,xq,vq1,':'');XLIM([02 * pi]);标题(“(默认)线性插值”);

现在评估v在相同的点上使用“样条曲线”方法

图vq2=interp1(x,v,xq,“样条曲线”);图(x,v,“o”,xq,vq2,':'');XLIM([02 * pi]);标题('样条插值');

定义一组函数值。

v=[01.4121.410-1.41-2-1.410];

定义一组位于默认点之间的查询点,1:9。在这种情况下,默认点为1:9因为v包含9价值观。

XQ = 1.5:8.5;

评估vxq.

vq=interp1(v,xq);

绘制结果。

图绘图((1:9),v,“o”,xq,vq,'*');传奇(“v”,“vq”);

定义一组样本点。

x = 1:10;

定义函数的值, v ( x ) = 5. x + x 2. ,在采样点。

v=(5*x)+(x.^2*1i);

将查询点定义为在x.

xq = 1:0.25:10;

插话v在查询点。

Vq = Interp1(x,v,xq);

将结果的实部绘制为红色,虚部绘制为蓝色。

图(x,实(v),'* r',xq,真实(VQ),“-r”);持有绘图(x,图像(v),“*b”,xq,imag(VQ),“-b”);

插值时间戳数据点。

考虑一个包含每四个小时测量一次的温度读数的数据集。创建一个包含一天数据的表并绘制数据。

x = (datetime(2016、1、1):小时(4):datetime(2016年1、2)';x.Format =“嗯,嗯,嗯”;T=[3125244433331];气象数据=表(x,T,'variablenames',{“时间”,“温度”})
气象数据=7×2表时间温度_____________ ___________ ________ 1月1日,00:00 3月31日1日01日,04:00 2月1日,04:00 2月1日,08:00 24日1日1日,12:00 41 1月1日,16:00 43日1日期02年1月1日02,00:00 31.
绘图(WeatherData.Time、WeatherData.Temperature、,“o”)

内插数据集以预测每分钟的温度读数。由于数据是定期的,请使用“样条曲线”插值法。

xq=(日期时间(2016,1,1):分钟(1):日期时间(2016,1,2));V=interp1(WeatherData.Time,WeatherData.Temperature,xq,“样条曲线”);

绘制插值点。

持有图(xq,V,“r”)

定义采样点,x以及相应的样本值,v.

x=[12345];v=[121631106];

指定查询点,xq,这超出了x.

xq=[0.5 1.5 5.5 6];

评估vxq使用'pchip'方法

vq1=interp1(x,v,xq,'pchip')
VQ1 =1×519.3684 13.6316 13.2105 7.4800 12.5600

接下来,评估vxq使用'线性'方法

VQ2 = Interp1(x,v,xq,'线性')
VQ2 =1×5Nan NaN 14南纳

现在,使用'线性'方法与'extrap'选项

vq3=interp1(x,v,xq,'线性','extrap')
vq3=1×58 10 14 4 2

'pchip'默认外推,但'线性'没有。

定义采样点,x以及相应的样本值,v.

x=[-3-2-10123];v=3*x.^2;

指定查询点,xq,这超出了x.

xq=[-4-2.5-0.50.52.54];

现在评估vxq使用'pchip'方法,并指定域之外的任何值x就价值而言,27..

vq=interp1(x,v,xq,'pchip',27)
vq=1×6.27.0000 18.6562 0.9375 0.9375 18.6562 27.0000

定义采样点。

x =(-5:5)';

在中定义的点处采样三个不同的抛物线函数x.

v1 = x ^ 2;v2 = 2 * x。^ 2 + 2;v3 = 3 * x。^ 2 + 4;

创建矩阵v,其列是向量,v1.,v2., 和v3.

v = [v1 v2 v3];

定义一组查询点,xq,以便在以下范围内进行更精细的采样:x.

xq=-5:0.1:5;

在以下位置评估所有三个功能:xq并绘制结果。

vq=interp1(x,v,xq,'pchip');图(x,v,“o”h=gca;h.XTick=-5:5;

图中的圆圈代表v,实线表示vq.

输入参数

全部崩溃

采样点,指定为实数的行或列向量。中的值x必须是不同的。的长度x必须符合以下要求之一:

  • 如果v那么,这是一个向量长度(x)必须相等长度(v).

  • 如果v是一个数组,然后是长度(x)必须相等尺寸(v,1).

例子:[1 2 3 4 5 6 7 8 9 10]

例子:1:10

例子:[3 7 11 15 19 23 27 31]'

数据类型:单身的|双重的|期间|约会时间

示例值,指定为载体,矩阵或真实或复数的数组。如果v是矩阵或数组,则每列包含一组单独的一维值。

如果v包含复数,然后interp1分别插值实部和虚部。

例子:兰特(1,10)

例子:兰特(10,1)

例子:兰特(10,3)

数据类型:单身的|双重的|期间|约会时间
复数支持:万博1manbetx

查询点,指定为标量、向量、矩阵或实数数组。

例子:5.

例子:1:0.05:10

例子:(1:0.05:10)'

例子:[0 1 2 7.5 10]

数据类型:单身的|双重的|期间|约会时间

插值方法,指定为此表中的选项之一。

方法

描述

连续性

注释

'线性'

线性插值。查询点处的插值值基于每个相应维度的相邻网格点处的值的线性插值。这是默认的插值方法。

C0

  • 至少需要2分

  • 比最近邻需要更多的内存和计算时间

“最近的”

最近的邻居插补。查询点处的插值值是最近的样本网格点处的值。

不连续

  • 至少需要2分

  • 适度的内存需求

  • 最快计算时间

“下一个”

下一个相邻插值。查询点处的插值是下一个采样网格点处的值。

不连续

  • 至少需要2分

  • 与相同的内存需求和计算时间“最近的”

'以前的'

以前的邻居插值。查询点处的插值值是先前示例网格点处的值。

不连续

  • 至少需要2分

  • 与相同的内存需求和计算时间“最近的”

'pchip'

形状保护分段立方体插值。查询点处的内插值基于相邻网格点处的值的形状保留的分段立方插值。

C1.

  • 至少需要4分

  • 需要比以前更多的内存和计算时间'线性'

“立方”

三次卷积在MATLAB中的应用®5。

C1.

  • 至少需要3分

  • 点的间距必须均匀

  • 这种方法可以追溯到“样条曲线”不规则间隔数据的插值

  • 类似的内存要求和计算时间'pchip'

'v5cbic'

等同于“立方”.

C1.

“makima”

修改的Akima三次Hermite插值。查询点处的插值基于次数最多为三次的多项式的分段函数。修改Akima公式以避免超调。

C1.

  • 至少需要2分

  • 产生的起伏少于“样条曲线”,但不会像'pchip'

  • 计算比计算更昂贵'pchip',但通常小于“样条曲线”

  • 内存需求类似于“样条曲线”

“样条曲线”

使用Not-A-Cnot结束条件的样条插值。查询点处的插值值基于每个相应维度的相邻网格点处的值的立方插值。

C2.

  • 至少需要4分

  • 需要比以前更多的内存和计算时间'pchip'

推断策略,指定为'extrap'或者是一个真正的标量值。

  • 具体说明'extrap'你想什么时候interp1使用与插值相同的方法计算域外的点。

  • 根据需要指定标量值interp1为域外的点返回特定的常量值。

默认行为取决于输入参数:

  • 如果您指定了'pchip',“样条曲线”, 或者“makima”插值方法,则默认行为为'extrap'.

  • 所有其他插值方法返回默认情况下,域外的查询点。

例子:'extrap'

例子:5.

数据类型:烧焦|一串|单身的|双重的

输出参数

全部崩溃

插值,作为标量、向量、矩阵或数组返回。的大小vq取决于物体的形状vxq.

v形 xq的形状 VQ的大小 实例
矢量 矢量 尺寸(xq) 如果尺寸(v)=[1100]
尺寸(xq)= [1 500],
然后尺寸(Vq)= [1 500].
矢量 矩阵
或N-D阵列
尺寸(xq) 如果尺寸(v)=[1100]
尺寸(xq)=[50 30],
然后尺寸(vq)=[50 30].
矩阵
或N-D阵列
矢量 [长度(xq)尺寸(v,2),…,尺寸(v,n)] 如果尺寸(v)= [100 3]
尺寸(xq)= [1 500],
然后尺寸(vq)=[500 3].
矩阵
或N-D阵列
矩阵
或N-D阵列
[尺寸(xq,1),…,尺寸(xq,n),…尺寸(v,2),…,尺寸(v,m)] 如果尺寸(v)= [4 5 6]
尺寸(xq)=[2 3 7],
然后尺寸(vq)=[2 3 7 5 6].

分段多项式,作为您可以传递给的结构ppval评价功能。

更多关于

全部崩溃

Akima与样条插值

这个秋马算法对于一维插值,如中所述[1][2],进行三次插值得到具有连续一阶导数(C1)的分段多项式。该算法在保持斜坡的同时避免了平坦区域的波动。当有三个或更多的连续共线点时,即为平坦区域,算法将这些点与直线连接。为了确保两个数据点之间的区域是平的,在这两个数据点之间插入一个额外的数据点。

当两个具有不同斜率的平面区域相遇时,对原始AKIMA算法的修改使得坡度更靠近零的侧面的重量。该修改优先于靠近水平的侧面,这更直观并避免过冲。(原始AKIMA算法向两侧的点提供平等的权重,因此均匀地划分波动。)

这个样条算法另一方面,执行三次插值以生成具有连续二阶导数(C2)的分段多项式。结果与常规多项式插值相当,但不太容易受到高次数据点之间剧烈振荡的影响。尽管如此,该方法可能会受到数据点之间的超调和振荡的影响。

与样条线算法相比,Akima算法产生的波动更少,更适合处理平坦区域之间的快速变化。下面使用连接多个平坦区域的测试数据说明了这种差异。

兼容性考虑因素

全部展开

R2020B的行为更改

参考文献

[1] 一种基于局部过程的插值和平滑曲线拟合的新方法ACM(JACM)杂志,1970年4月17日,第589-602页。

[2] 基于局部过程的二元插值和光滑曲面拟合方法ACM的通信,1974年1月17日,第18-20页。

扩展能力

在R2006A之前介绍