主要内容

interp1

1-D数据插值(查表)

描述

实例

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

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

实例

矢量量化=interp1(x,v,xq,方法)指定替代插值方法:“线性”,“最近的”,“下一个”,“以前的”,“pchip”,“立方”,“v5cubic”,“makima”“样条曲线”.默认方法是“线性”

实例

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

实例

矢量量化=interp1(v,xq)返回插值并假定一组默认采样点坐标。默认点是来自的数字序列1.N,在那里N取决于形状v:

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

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

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

矢量量化=interp1(v,xq,方法)指定任意替代插值方法并使用默认采样点。

矢量量化=interp1(v,xq,方法,外推法)指定一个外推策略并使用默认的样本点。

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

笔记

不建议使用此语法。请使用griddedInterpolant相反

例子

全部崩溃

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

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

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

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

在查询点处插入函数并绘制结果。

图vq1=interp1(x,v,xq);曲线图(x,v,“哦”,xq,vq1,':.');xlim([02*pi]);标题(“(默认)线性插值”);

图中包含一个axes对象。标题为(默认)线性插值的axes对象包含2个line类型的对象。

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

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

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

定义一组函数值。

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,“哦”,xq,vq,'*'); 传奇(“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,real(vq),“-r”); 持有在…上绘图(x,图像(v),“*b”,xq,imag(vq),“- b”);

图中包含一个Axis对象。Axis对象包含4个line类型的对象。

内插时间戳数据点。

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

x=(日期时间(2016,1,1):小时(4):日期时间(2016,1,2));x、 格式=“嗯dd, HH: mm”;T = [31 25 24 41 43 33 31]';WeatherData =表(x T“变化无常”,{“时间”,“温度”})
气象数据=7×2表时间温度:1月1日00:00 01月31日04:00 01月25日08:00 01月24日12:00 01月41日16:00 01月43日20:00 33日02月02日00:00 31
绘图(WeatherData.Time、WeatherData.Temperature、,“哦”)

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

插入数据集来预测一天中每一分钟的温度读数。由于数据是周期性的,所以使用“样条曲线”插值法。

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

绘制插值点。

持有在…上图(xq,V,“r”)

图中包含一个axes对象。axes对象包含两个line类型的对象。

定义采样点,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×5楠楠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×627.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,v2v3

v=[v1 v2 v3];

定义一组查询点,xq的范围内更精细的取样x

xq=-5:0.1:5;

对所有三个函数求值xq并绘制结果。

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

图中包含一个轴对象。axis对象包含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是一个矩阵或数组,则每一列包含一组单独的1-D值。

如果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”

“v5cubic”

等同于“立方”

C1.

“makima”

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

C1.

  • 至少需要2分

  • 产生的波动比“样条曲线”,但不像“pchip”

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

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

“样条曲线”

使用非节点结束条件的样条曲线插值。查询点处的插值基于每个相应维度中相邻网格点处的值的立方插值。

C2.

  • 至少需要4分

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

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

  • 指定“extrap”你想什么时候interp1使用与插值相同的方法计算域外的点。

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

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

  • 如果指定“pchip”,“样条曲线”“makima”插值方法,那么默认行为是“extrap”

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

例子:“extrap”

例子:5.

数据类型:字符|字符串|仅有一个的|

输出参数

全部崩溃

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

v的形状 xq的形状 Vq的大小 实例
矢量 矢量 尺寸(xq) 如果尺寸(v)=[1100]
尺寸(xq)=[1500],
然后尺寸(vq)=[1500]
矢量 矩阵
或一天数组
尺寸(xq) 如果尺寸(v)=[1100]
尺寸(xq)=[50 30],
然后尺寸(vq)=[50 30]
矩阵
或一天数组
矢量 [长度(xq)大小(v, 2),…,大小(v, n)) 如果尺寸(v)=[100 3]
尺寸(xq)=[1500],
然后尺寸(vq) = [500 3]
矩阵
或一天数组
矩阵
或一天数组
[尺寸(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] Akima,藤原浩。“一种基于局部程序的插值和平滑曲线拟合的新方法。”ACM杂志(JACM), 1970年,第589-602页。

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

扩展功能

在R2006a之前引入