主要内容

插值网格数据

网格数据包括在形成网格的规则间隔点处的值或测量值。网格数据在许多领域出现,例如气象,测量和医学成像。在这些区域中,通常会以规则的空间间隔进行测量,可能随时间随时间进行。这些数据的这些订购网格可以从1-D(简单时序)到4-D(用于随时间测量的量)或更高。网格数据的一些示例是:

  • 1-D:随时间变化的股票价格

  • 二维:表面的温度

  • 3-D:大脑的MRI图像

  • 4-D:随时间变化的海水体积

在所有这些应用中,基于网格的插值有效地将数据的有用性扩展到没有测量的点。例如,如果您有某只股票的每小时价格数据,您可以使用插值来每15分钟估计一次价格。

马铃薯网格插值函数

马铃薯®提供了几种基于网格的插值工具:

网格创建功能

meshgridndgrid功能创建不同维度的网格。meshgrid可以创建2-D或3-D网格,而ndgrid可以创建任意维度的网格。这些函数使用不同的输出格式返回网格。控件可以在这些网格格式之间进行转换PageTranspose.截至R2020B.) 或者换乘函数来交换网格的前两个维度。

插值函数

插值函数函数族包括interp1.interp2.interp3.,interpn.每个函数的设计目的是用特定的维数来插值数据。interp2.interp3.使用网格meshgrid格式,而interpn使用网格ndgrid格式。

插值对象

栅格internallant.对象支持在任意维金宝app度内插数据ndgrid格式。这些对象也支持多值插值(金宝app截至R2021A),其中每个网格点可以有多个相关联的值。

使用它可以带来内存和性能方面的好处栅格internallant.对象在插值函数功能。栅格internallant.为插值对象的重复查询提供了实质性的性能改进,而插值函数函数每次被调用时都执行一个新的计算。同时,栅格internallant.将样本点存储在一种内存高效的格式中(例如紧凑的网格)被多线程利用多核计算机处理器。

网格表示

MATLAB允许您用三种表示形式中的一种来表示网格:全网格、紧凑网格或默认网格。使用默认网格和紧凑网格主要是为了方便和提高效率。

完整的网格

一个完整的网格其中所有点都是明确定义的。的输出ndgridmeshgrid定义一个完整的网格。您可以创建完整的网格制服,其中每个维度中的点具有相同的间距,或非均匀,其中间距在一个或多个维度中变化。均匀网格在每个维度上可以有不同的间距,只要在每个维度内间距是恒定的。

统一的 统一的 非均匀

在每个方向上有均匀间隔的点的网格。

具有等间距点的网格,但每个维度的间距不同。

每个尺寸的非均匀间隔点网格。

一个统一的全网格的例子是:

[x,y] = meshgrid([1 2 3],[3 6 9 12])
X = 12 3 12 3 12 3 12 3 12 3 12 3 y = 3 3 3 3 6 6 6 9 9 9 12 12 12

紧凑型电网

在处理大型网格时,显式定义网格中的每个点可能会消耗大量内存。的紧凑的网格表示是一种省去整个网格的内存开销的方法。紧凑网格表示仅存储网格向量(每个维度一个)而不是整个网格。一起,网格向量隐式地定义了网格。实际上,输入meshgridndgrid是网格向量,这些功能复制了网格向量以形成完整的网格。紧凑型电网表示使您可以绕过网格创建并将网格向量直接提供给插值功能。

例如,考虑两个向量,x1 = 1:3x2 = 1:5.您可以将这些向量视为一组坐标x1方向和一组坐标x2方向,像这样:

一个电网向量水平排列,垂直地布置。

每个箭头指向一个位置。你可以用这两个向量来定义一组网格点,其中一组坐标是x1而另一组坐标由x2.当网格向量被复制时,它们会形成两个坐标数组,构成整个网格:

利用一个栅格矢量水平和另一个垂直排列,矢量中的点限定点的网格。

您的输入网格向量可能是单调非单调.单调载体包含该尺寸增加或尺寸减少的值。相反,非单调载体含有波动的值。如果输入电网向量是非单调的,例如[2 4 6 3 1],然后[X1,X2] = ndgrid([2 4 6 3 1])输出非单调网格。如果要将网格传递给其他MATLAB函数,网格向量应该是单调的。的排序功能可用于确保单调性。

默认的网格

在某些应用中,只有网格点上的值是重要的,而网格点之间的距离不是重要的。例如,大多数MRI扫描收集的数据在各个方向上都是均匀分布的。在这种情况下,您可以允许插值函数自动生成默认的网格与数据一起使用的表示。要做到这一点,请忽略插值函数的网格输入。当您忽略网格输入时,该函数会自动认为数据位于单位间隔的网格上。函数在执行时创建这个单位间距的网格,节省了您自己创建网格的麻烦。

例如:二维网格上的温度插值

考虑以常规5cm间隔在表面上收集的温度数据,每个方向延伸20厘米。用meshgrid创建完整的网格。

(X, Y) = meshgrid (0:5:20)
x = 0 5 10 15 20 0 5 10 15 20 0 5 10 15 20 0 5 10 15 20 0 5 10 15 20 y = 0 0 0 0 0 5 5 5 5 5 5 10 10 10 10 10 15 15 15 15 15 15 15 15 2020 20 20 20

这 (xy)中每个网格点的坐标表示为相应的元素XY矩阵。第一个网格点是(X (1) (1)),这是[0 0],下一个网格点为[X Y (2) (2)],这是[0 5], 等等。

现在,创建一个矩阵来表示网格上的温度测量值,然后将数据绘制成一个曲面。

T = [1 1 10 1 1;1 10 10 10 10;100 100 1000 100 100;10 10 10 10 1;1 1 10 1 1];冲浪(X, Y, T)视图(2)

网格化温度数据的表面图。

虽然中心网格点的温度较大,但从原始数据来看,其位置及其对周围网格点的影响并不明显。

要提高数据的分辨率,则为10倍,使用interp2.将温度数据插入使用0.5cm间隔的更精细的网格。用meshgrid再次创建由矩阵表示的更精细的网格XQ.YQ..然后,使用interp2.使用原始网格,温度数据和新网格点,并绘制所产生的数据。默认情况下,interp2.在每个维度使用线性插值。

[xq,yq] = meshgrid(0:0.5:20);TQ = Interp2(x,y,t,xq,yq);冲浪(XQ,YQ,TQ)查看(2)

内插温度数据的表面图。

插值温度数据将详细介绍给图像,大大提高了测量区域内数据的有用性。

网格插值方法

MATLAB中基于网格的插值函数和对象提供了几种不同的插值方法。在选择插值方法时,请记住,一些需要比其他内存更多的存储器或更长的计算时间。您可能需要缩减这些资源,以达到结果所需的平滑度。下表给出了应用于相同1-D数据的每个插值方法的预览,并还提供了每个方法的优势,权衡和要求概述。

方法 描述

最近邻插值。

查询点上的插值值是最近的样本网格点上的值。

  • 不连续

  • 适度的内存需求

  • 最快的计算时间

  • 每个维度需要2个网格点

下一个邻居插值。

查询点处的插值值是下一个示例网格点处的值。

  • 不连续

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

  • 仅用于一维插值

  • 要求至少2个网格点

以前的邻居插值。

查询点上的插值值是前一个样本网格点上的值。

  • 不连续

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

  • 仅用于一维插值

  • 要求至少2个网格点

线性插值。

查询点上的插值值是基于每个维度上相邻网格点上的值的线性插值。

  • C0连续

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

  • 每个维度至少需要2个网格点

分词立方插值。

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

  • C1连续

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

  • 仅用于一维插值

  • 要求至少4个网格点

立方插值。

查询点上的插值值是基于每个维度上相邻网格点上的值的三次插值。

  • C1连续

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

  • 网格必须具有均匀的间距,但每个维度的间距不必是相同的

  • 每个维度至少需要4个点

修改Akima插值。

查询点处的插值值基于多项式的分段函数,最多使用每个相应维度中的相邻网格点的值进行评估。的修正了Akima公式避免过激。

  • C1连续

  • 与样条曲线类似的内存要求

  • 需要比三次曲线更多的计算时间,但通常少于样条曲线

  • 每个维度至少需要2个网格点

样条插值。

查询点处的插值值基于每个相应维度的相邻网格点处的值的立方插值。

  • C2连续的

  • 比立方需要更多的内存和计算时间

  • 每个维度至少需要4个点

另请参阅

||||

相关的话题