主要内容

插值网格数据

网格的值或测量数据由定期间隔点,形成一个网格。网格数据出现在许多领域,如气象学、测量、医学成像。在这些领域中,通常在正则空间间隔进行测量,可能随着时间的推移。这些命令的网格数据的范围可以从一维(简单时间序列)4 - d(为测量随时间变化量)或更高。网格数据的一些例子:

  • 一维:股票价格随着时间的推移

  • 二:表面的温度

  • 3 d:核磁共振图像的大脑

  • 4 - d:海洋测量水的体积

在所有这些应用中,基于网格插值有效地扩展了有用的数据点没有测量。例如,如果你有每小时为股票价格数据,您可以使用插值近似价格每15分钟。

MATLAB网格插值函数

MATLAB®提供了一些工具,用于基于网格插值:

网格创建函数

meshgridndgrid函数创建各种维度的网格。meshgrid可以创建2 d或3 d网格,而ndgrid可以创建网格与任意数量的维度。这些函数返回网格使用不同的输出格式。你可以在这些网格格式之间转换使用pagetranspose(的R2020b)或交换交换功能的第一个二维网格。

插值函数

插值函数家庭的功能包括interp1,interp2,interp3,interpn。每个函数是用来插入数据与特定数量的维度。interp2interp3使用网格meshgrid格式,而interpn使用网格ndgrid格式。

插值的对象

griddedInterpolant对象支持任意数量万博1manbetx的维插值数据ndgrid格式。这些对象也支持多值插值(万博1manbetx的R2021a),每个网格点可以有多个与之关联的值。

有内存和性能好处griddedInterpolant对象在插值函数功能。griddedInterpolant提供了大量的重复查询的性能改进interpolant对象,而插值函数函数执行一个新的计算每次调用。同时,griddedInterpolant以节约内存格式存储采样点(作为一个紧凑的网格),是利用多核多线程计算机处理器。

网格表示

MATLAB可以代表一个网格的三个表示:完整的电网,紧凑的网格,网格或违约。默认的网格和紧凑的网格是主要用于方便,提高效率,分别。

完整的网格

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

统一的 统一的 非均匀

网格uniformly-spaced分在每个方向。

与uniformly-spaced点网格,但每个维度的间距不同。

网格nonuniformly-spaced分在每个维度。

统一完整的网格的一个例子是:

(X, Y) = meshgrid ([1 2 3], [3 6 9 12])
X = 1 2 3 1 2 3 1 2 3 1 2 3 Y = 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函数。的排序函数是非常有用的,以确保单调性。

默认的网格

在某些应用程序中,只在网格点的值是重要的,而不是网格点之间的距离。例如,大多数核磁共振扫描收集数据是均匀间隔的四面八方。在这种情况下,可以允许插值函数自动生成默认的网格表示使用的数据。要做到这一点,省去网格插值函数的输入。当你离开了电网输入函数自动认为unit-spaced网格数据。这个函数创建unit-spaced网格执行,节省你自己创建一个网格的麻烦。

例如:温度在二维网格插值

考虑温度数据收集在一个表面上有5厘米的间隔,在每个方向延长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 10 10 10 10 10 15个15个15个15个15 20 20 20 20 20

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

现在,创建一个矩阵来表示温度测量的表面网格,然后画出数据。

10 T = [1 1 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.5厘米间隔。使用meshgrid再创建一个更精细的网格所代表的矩阵XqYq。然后,用interp2与原来的网格、温度数据和新网格点,和策划结果数据。默认情况下,interp2使用每个维度中线性插值。

[Xq, Yq] = meshgrid (0:0.5:20);Tq = interp2 (X, Y, T, Xq, Yq);冲浪(Xq Yq Tq)视图(2)

温度插值数据的曲面图。

温度插值数据添加细节图像,大大提高数据的有用性的区域内测量。

网格插值方法

基于网格插值函数和对象在MATLAB提供几种不同的插值方法。在选择一个插值方法时,要记住一些比其他人需要更多的内存或较长的计算时间。你可能需要权衡这些资源来达到所需的平滑的效果。从下表中可以看到每个插值方法应用于相同的一维数据,还提供了一个概述的好处,权衡,每个方法的要求。

方法 描述

最近邻插值。

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

  • 不连续

  • 适度的内存需求

  • 最快的计算时间

  • 需要在每个维度两个网格点

下一个邻居插值。

插入的值查询点是在下一个采样网格点的值。

  • 不连续

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

  • 只用于一维插值

  • 至少需要两个网格点

以前的邻居插值。

插入的值查询点是前面的示例网格点的值。

  • 不连续

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

  • 只用于一维插值

  • 至少需要两个网格点

线性插值。

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

  • C0连续

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

  • 至少需要两个网格点在每一个维度

分段立方插值。

插入的值查询点是基于一种保形分段立方插值的相邻网格点的值。

  • C1连续

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

  • 只用于一维插值

  • 至少需要4个网格点

立方插值。

插入的值查询点是基于立方插值的相邻网格点的值在每个各自的维度。

  • C1连续

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

  • 网格必须均匀间距,尽管每个维度的间隔没有是相同的

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

修改Akima插值。

插入的值查询点是基于分段函数的多项式学位最多三个评估使用相邻网格点的值在每个各自的维度。的Akima修改公式避免过激。

  • C1连续

  • 类似的样条内存需求

  • 比立方需要更多的计算时间,但通常不到样条

  • 至少需要两个网格点在每一个维度

样条插值。

插入的值查询点是基于立方插值的相邻网格点的值在每个各自的维度。

  • C2连续的

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

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

另请参阅

||||

相关的话题