interp2
网格格式的二维网格数据插值
语法
描述
例子
使用默认方法在网格上插值
粗样品的山峰
函数。
(X, Y) = meshgrid(三3);V =山峰(X, Y);
绘制粗采样图。
图冲浪(X, Y, V)标题(“原始采样”);
创建间距为0.25的查询网格。
[Xq, Yq] = meshgrid (3:0.25:3);
在查询点处插值。
Vq = interp2 (X, Y, V, Xq Yq);
策划的结果。
图冲浪(Xq, Yq Vq);标题(“使用更细网格的线性插值”);
使用三次插值法在网格上插值
对峰函数进行粗采样。
(X, Y) = meshgrid(三3);V =山峰(7);
绘制粗采样图。
图冲浪(X, Y, V)标题(“原始采样”);
创建间距为0.25的查询网格。
[Xq, Yq] = meshgrid (3:0.25:3);
在查询点上进行插值,并指定三次插值。
Vq = interp2 (X, Y, V, Xq, Yq“立方”);
策划的结果。
图冲浪(Xq, Yq Vq);标题('精细网格上的三次插值');
改进灰度图像
将一些图像数据加载到工作区中。
负载flujet.matcolormap灰色的
分离图像的一个小区域,并将其转换为单精度。
V =单(X (200:300 1:25));
显示图像区域。
显示亮度图像(V);轴从标题(原始图像的)
通过在每个维度上重复划分精化网格点之间的间隔5次来插入插值值。
Vq = interp2 (V, 5);
显示结果。
显示亮度图像(Vq);轴从标题(线性插值的)
求X和Y域之外的值
在这个范围内对一个函数进行粗略采样,(2, 2)
在这两个维度。
(X, Y) = meshgrid (2:0.75:2);R =√X。²+ y²)+ eps;V =罪(R)。/ (R);
绘制粗采样图。
图冲浪(X,Y,V) xlim([-4 4]) ylim([-4 4]) title(“原始采样”)
的域之外创建查询网格X
而且Y
.
[Xq, Yq] = meshgrid (3:0.2:3);
的范围内执行三次插值X
而且Y
,并将所有属于外部的查询赋值为零。
Vq = interp2 (X, Y, V, Xq, Yq“立方”, 0);
策划的结果。
图冲浪(Xq, Yq Vq)标题(“在X和Y域外Vq=0的三次插值”);
输入参数
V
- - - - - -样本值
矩阵
样本值,指定为实矩阵或复矩阵。尺寸要求V
取决于的大小X
而且Y
:
如果
X
而且Y
矩阵是否表示一个完整的网格(在meshgrid
格式),然后V
一定和?一样大X
而且Y
.如果
X
而且Y
网格是向量吗V
必须是包含长度(Y)
行和长度(X)
列。
如果V
那么包含复数interp2
分别插值实部和虚部。
例子:兰特(10,10)
数据类型:单
|双
复数的支持:是的
Xq, Yq
- - - - - -查询点
标量|向量|矩阵|数组
查询点,指定为实标量、向量、矩阵或数组。
如果
Xq
而且Yq
是标量,那么它们就是单个查询点的坐标。如果
Xq
而且Yq
是不同方向的向量吗Xq
而且Yq
被视为网格向量。如果
Xq
而且Yq
那么向量的大小和方向相同吗Xq
而且Yq
被视为散点在二维空间中。如果
Xq
而且Yq
是矩阵,那么它们要么表示查询点的完整网格(在meshgrid
格式)或分散的点。如果
Xq
而且Yq
是N-D数组,那么它们表示二维空间中的散点。
例子:[Xq, Yq] = meshgrid ((1:0.1:10), (5:0.1:0))
数据类型:单
|双
k
- - - - - -细分因素
1
(默认)|实数,非负,整数标量
细化因子,指定为实数、非负整数标量。此值指定在每个维度中重复划分细化网格的间隔的次数。这将导致2 ^ k - 1
插值点之间的样本值。
如果k
是0
,然后矢量量化
和V
.
interp2 (V, 1)
和interp2 (V)
.
下面的插图显示了插值值(红色)在for的9个样本值(黑色)中的位置k = 2
.
例子:interp2 (V, 2)
数据类型:单
|双
方法
- - - - - -插值法
“线性”
(默认)|“最近的”
|“立方”
|样条的
|“makima”
插值方法,指定为该表中的选项之一。
方法 | 描述 | 连续性 | 评论 |
---|---|---|---|
“线性” |
查询点上的插值值基于每个维度上相邻网格点上的值的线性插值。这是默认的插值方法。 | C0 |
|
“最近的” |
在查询点上的插值值是在最近的样本网格点上的值。 | 不连续 |
|
“立方” |
查询点上的插值值基于每个维度上相邻网格点上的值的三次插值。插值是基于三次卷积的。 | C1 |
|
“makima” |
改进的Akima立方Hermite插值。在查询点上的插值值基于一个分段多项式函数,该多项式的次数最多为3,使用每个维度上的相邻网格点的值进行评估。Akima公式被修改以避免超调。 | C1 |
|
样条的 |
查询点上的插值值基于每个维度上相邻网格点上的值的三次插值。插值是基于一个三次样条使用非结结束条件。 | C2 |
|
extrapval
- - - - - -定义域外的函数值X
而且Y
标量
定义域外的函数值X
而且Y
,指定为实标量或复标量。interp2
的定义域之外的所有点返回此常量值X
而且Y
.
例子:5
例子:5 + 1我
数据类型:单
|双
复数的支持:是的
输出参数
矢量量化
——插入值
标量|向量|矩阵
插值值,作为实或复标量、向量或矩阵返回。的大小和形状矢量量化
这取决于您使用的语法,在某些情况下,还取决于输入参数的大小和值。
语法 | 特殊的条件 | 矢量的大小 | 例子 |
---|---|---|---|
Xq interp2 (X, Y, V, Yq) interp2 (V, Xq, Yq) 这些语法的变体包括 方法 或extrapval |
Xq ,Yq 是标量 |
标量 | size(Vq) = [1 1] 当你通过Xq 而且Yq 标量。 |
同上 | Xq ,Yq 向量的大小和方向相同吗 |
大小和方向相同的向量Xq 而且Yq |
如果size(Xq) = [100 1] 而且 size(Yq) = [100 1] ,然后 size(Vq) = [100 1] . |
同上 | Xq ,Yq 矢量是混合方向的吗 |
矩阵的行数长度(Yq) ,列数为长度(Xq) |
如果size(Xq) = [1 100] 而且 size(Yq) = [501] ,然后 size(Vq) = [50 100] . |
同上 | Xq ,Yq 矩阵或数组的大小相同吗 |
大小相同的矩阵或数组Xq 而且Yq |
如果size(Xq) = [50 25] 而且 size(Yq) = [50 25] ,然后 size(Vq) = [50 25] . |
interp2 (V, k) 这个语法的变体包括 方法 或extrapval |
没有一个 | 矩阵,其中行数为: |
如果size(V) = [10 20] 而且 k = 2 ,然后 size(Vq) = [37 77] . |
更多关于
严格单调
一组总是增加或减少,没有反转的值。例如,这个序列,A = [2 4 6 8]
是严格单调和递增的。这个序列,B = [2 4 4 6 8]
不是严格单调的,因为两者之间的值没有变化b (2)
而且b (3)
.这个序列,C = [2 4 6 8 6]
包含以下的反转c (4)
而且c (5)
,所以它根本不是单调的。
全网格(网格格式)
为interp2
,完整网格是一对矩阵,其元素表示矩形区域上的点网格。一个矩阵包含x-坐标,另一个矩阵包含y坐标。中的值x矩阵是严格单调沿着行递增。列上的值是常数。中的值y-矩阵是严格单调的,并且沿着列递增。它的行上的值是常数。使用meshgrid
函数创建一个可以传递到的完整网格interp2
.
例如,下面的代码为区域创建一个完整的网格,-1≤x≤3和1≤y≤4:
(X, Y) = meshgrid (1:3 (1:4))
X = -1 0 1 2 3 -1 0 1 2 3 -1 0 1 2 3 -1 0 1 2 3 y = 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3 4 4 4 4 4 4
网格向量是一种比完整网格更紧凑的表示网格的格式。两种格式与样本值矩阵之间的关系V
是
网格向量
为interp2
,网格向量由一对向量组成,它们定义x- - -y网格中的-坐标。行向量定义了x-coordinates,列向量定义y坐标。
例如,下面的代码创建指定区域的网格向量,-1≤x≤3和1≤y≤4:
x = 1:3;y = (1:4) ';
散点
为interp2
,散点由一对数组组成,它们定义了散在二维空间中的点的集合。一个数组包含x-坐标,另一个包含y坐标。
例如,以下代码指定点(2,7),(5,3),(4,1)和(10,9):
X = [2 5;4 10];Y = [7 3;1 9];
扩展功能
C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
Xq
而且Yq
必须是一样的尺寸。使用meshgrid
在网格上求值。为获得最佳结果,请提供
X
而且Y
向量。这些向量中的值必须是严格单调且递增的。代码生成不支持
“makima”
插值方法。为
“立方”
插补法中,如果网格没有均匀间距,就会产生误差。在本例中,使用样条的
插值方法。为获得最佳效果,当您使用
样条的
插值方法:使用
meshgrid
创建输入Xq
而且Yq
.使用少量的内插点相对于尺寸
V
.对大量分散的点进行插值是低效的。
GPU的代码生成
使用GPU Coder™为NVIDIA GPU生成CUDA®代码。
使用注意事项和限制:
Xq
而且Yq
必须是一样的尺寸。使用meshgrid
在网格上求值。为获得最佳结果,请提供
X
而且Y
向量。这些向量中的值必须是严格单调且递增的。代码生成不支持
“makima”
插值方法。为
“立方”
插补法中,如果网格没有均匀间距,就会产生误差。在本例中,使用样条的
插值方法。为获得最佳效果,当您使用
样条的
插值方法:使用
meshgrid
创建输入Xq
而且Yq
.使用少量的内插点相对于尺寸
V
.对大量分散的点进行插值是低效的。
线程环境
在后台使用MATLAB®运行代码backgroundPool
或使用并行计算工具箱™加速代码ThreadPool
.
这个函数完全支持基于线程的环境。有关更多信息,请参见在线程环境中运行MATLAB函数.
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
使用注意事项和限制:
V
必须是双或单二维数组。V
可以是真实的,也可以是复杂的。V
不能是向量。X
而且Y
必须:有相同的类型(双份或单份)。
是有限向量或具有相应维数的递增和非重复元素的二维数组。
与笛卡尔轴对齐时
X
而且Y
是非矢量二维数组(就好像它们是由meshgrid
).尺寸符合
V
.
Xq
而且Yq
必须是相同类型的向量或数组(double或single)。如果Xq
而且Yq
是数组,那么它们必须具有相同的大小。如果它们是不同长度的向量,那么它们一定有不同的方向。方法
必须“线性”
,“最近的”
,或“立方”
.不支持越界输入的外推。
有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱).
分布式阵列
使用并行计算工具箱™跨集群的组合内存分区大型数组。
这个函数完全支持分布式数组。有关更多信息,请参见运行MATLAB函数与分布式数组(并行计算工具箱).
版本历史
之前介绍过的R2006a
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。