Main Content

三维网格中所选二维采样的插值

本示例显示如何降低三维的网格平面数组的维度以求解二维插值问题。

在某些应用领域,可能需要对网格的低维平面进行插值;例如,对三维网格中的一个平面进行插值。从三维网格中提取网格平面时,生成的数组可能为三维格式。您可以使用 squeeze 函数降低网格平面数组在二维中求解问题。

创建三维样本网格和对应的值。

[X,Y,Z] = ndgrid(1:5);
V = X.^2 + Y.^2 +Z;

从网格中选择二维样本。在此例中,为样本的第三列。

x = X(:,3,:);
z = Z(:,3,:);
v = V(:,3,:);

二维平面出现在 Y=3 处,因此 Y 维度已固定。xzv 是 5×1×5 的数组。必须先将数组降低为二维数组才能计算该插值。

使用 squeeze 函数将 xzv 向下降低为二维数组。

x = squeeze(x);
z = squeeze(z);
v = squeeze(v);

在更精细的查询点网格上插入二维切片。

[Xq,Zq] = ndgrid(1:0.5:5);
Vq = interpn(x,z,v,Xq,Zq);

绘制结果。

figure
surf(Xq,Zq,Vq);
xlabel('Xq');
ylabel('Zq');
zlabel('Vq');

Figure contains an axes object. The axes object with xlabel Xq, ylabel Zq contains an object of type surface.

另请参阅

|

相关主题