主要内容

interp1

一维数据插值(查表)

描述

例子

矢量量化= interp1 (xvxq使用线性插值在特定的查询点返回1-D函数的插值值。向量x包含样品点,和v包含相应的值,vx)。向量xq包含查询点的坐标。

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

例子

矢量量化= interp1 (xvxq方法指定一个替代插值方法:'线性'“最近的”“下一个”'以前的''pchip'“立方”'v5cbic'“makima”, 或者样条的.默认方法是'线性'

例子

矢量量化= interp1 (xvxq方法外推法指定对域之外的点求值的策略x.集外推法'extrap'当你想使用的时候方法推断算法。或者,您可以指定一个标量值,在这种情况下,interp1域之外的所有点返回该值x

例子

矢量量化= interp1 (vxq返回插值的值并假定一个默认的样本点坐标集。默认点是起始的数字序列1n,在那里n取决于形状v

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

  • 当v是一个数组时,默认的点是1:尺寸(v, 1)

当您不关心点之间的绝对距离时,请使用此语法。

矢量量化= interp1 (vxq方法指定任何备用插值方法,并使用默认采样点。

矢量量化= interp1 (vxq方法外推法指定外推策略并使用默认示例点。

PP.= interp1 (xv方法“页”)返回分段多项式形式vx)使用方法算法。

请注意

不建议使用此语法。用griddedInterpolant代替。

例子

全部折叠

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

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

将查询点定义为范围内的更精细抽样x

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

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

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

图中包含一个轴。具有标题(默认)线性插值的轴包含2个类型的2个对象。

现在评估v在相同的点使用样条的方法。

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

图中包含一个轴。标题为样条插值的轴包含2个直线类型的对象。

定义一组函数值。

V = [0 1.41 2 1.41 0 -1.41 -2 -1.41 0];

定义一组位于默认点之间的查询点,1:9.在本例中,默认的点是1:9因为v包含9价值观。

XQ = 1.5:8.5;

评估vxq

vq = interp1 (v, xq);

绘制结果。

图绘图((1:9),v,“o”xq矢量量化,‘*’);传奇(“v”矢量量化的);

图中包含一个轴。坐标轴包含两个line类型的对象。这些物体代表v, vq。

定义一组样本点。

x = 1:10;

定义函数的值, v x 5 x + x 2 ,在样本点处。

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

将查询点定义为范围内的更精细抽样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”);

图中包含一个轴。坐标轴包含4个line类型的对象。

插值时间戳数据点。

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

x = (datetime(2016、1、1):小时(4):datetime(2016年1、2)';x.Format =“嗯dd, HH: mm”;T = [31 25 24 41 43 33 31]';WeatherData =表(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。时间,WeatherData。温度,“o”

图中包含一个轴。轴包含一个类型为line的对象。

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

xq = (datetime(2016、1、1):分钟(1):datetime(2016年1、2)';V = interp1 (WeatherData。时间,WeatherData。温度,xq,样条的);

绘制插值点。

持有情节(xq, V,“r”

图中包含一个轴。坐标轴包含两个line类型的对象。

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

X = [1 2 3 4 5];V = [12 16 31 10 6];

指定查询点,xq,超出…的范围x

Xq = [0 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 -1 0 1 2 3];v = 3 * x ^ 2;

指定查询点,xq,超出…的范围x

Xq = [-4 -2.5 -0.5 0.5 2.5 4];

现在评估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”xq, vq);甘氨胆酸h =;h.XTick = 5;

图中包含一个轴。轴包含了6个line类型的对象。

图中的圆圈表示v,实线表示矢量量化

输入参数

全部折叠

抽样点,指定为实数的行或列向量。中的值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)

数据类型:单身的||持续时间|约会时间
复数的支持:金宝app是的

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

例子: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插值。查询点上的插值值基于次数最多为3的多项式分段函数。Akima公式进行了修改,以避免超调。

C1

  • 至少需要2分

  • 产生的波动比样条的,但不会像'pchip'

  • 计算费用比'pchip',但通常少于样条的

  • 内存需求类似于样条的

样条的

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

C2

  • 要求至少4分

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

推断策略,指定为'extrap'或者一个实标量值。

  • 指定'extrap'当你想要interp1用与插值相同的方法求域外点的值。

  • 如果需要,请指定标量值interp1返回域外点的特定常数值。

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

  • 如果您指定了'pchip'样条的, 或者“makima”插值方法,那么默认行为是'extrap'

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

例子:'extrap'

例子:5

数据类型:字符|字符串|单身的|

输出参数

全部折叠

插值值,以标量、向量、矩阵或数组的形式返回。的大小矢量量化取决于形状vxq

v的形状 xq的形状 VQ的大小 例子
向量 向量 大小(xq) 如果Size (v) = [1 100]
尺寸(xq)= [1 500]
然后尺寸(Vq)= [1 500]
向量 矩阵
或一天数组
大小(xq) 如果Size (v) = [1 100]
Size (xq) = [50 30]
然后Size (vq) = [50 30]
矩阵
或一天数组
向量 [长度(xq)大小(v, 2),…,大小(v, n)) 如果尺寸(v)= [100 3]
尺寸(xq)= [1 500]
然后Size (vq) = [500 3]
矩阵
或一天数组
矩阵
或一天数组
(尺寸(xq, 1),…,大小(xq, n),…大小(v, 2),…,大小(v, m)] 如果尺寸(v)= [4 5 6]
Size (xq) = [2 3 7]
然后Size (vq) = [3 7 5 6]

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

更多关于

全部折叠

Akima和样条插值

Akima算法对于一维插值,参见[1][2],执行三次插值,以产生具有连续一阶导数(C1)的分段多项式。该算法保留了平面区域的斜率,避免了平面区域的波动。当有三个或三个以上的连续共线点时,就会出现一个平坦区域,算法将这些点与一条直线连接起来。为了确保两个数据点之间的区域是平坦的,请在这两个数据点之间插入一个额外的数据点。

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

样条算法另一方面,执行三次插值,产生具有连续二阶导数的分段多项式(C2)。该结果可与正则多项式插值相媲美,但不太容易受到数据点之间高程度的剧烈振荡的影响。不过,这种方法可能会受到数据点之间的超调和振荡的影响。

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

兼容性考虑因素

全部展开

R2020B的行为更改

参考文献

[1] Akima,藤原浩。一种新的基于局部程序的插值和平滑曲线拟合方法。ACM(JACM)杂志, 17.4, 1970, pp. 589-602。

[2] Akima,藤原浩。一种基于局部程序的二元插值和光滑曲面拟合方法。ACM的通信, 17.1, 1974,第18-20页。

扩展功能

在R2006A之前介绍