Main Content

Interpolation of 2-D Selections in 3-D Grids

This example shows how to reduce the dimensionality of the grid plane arrays in 3-D to solve a 2-D interpolation problem.

In some application areas, it might be necessary to interpolate a lower dimensional plane of a grid; for example, interpolating a plane of a 3-D grid. When you extract the grid plane from the 3-D grid, the resulting arrays might be in 3-D format. You can use the squeeze function to reduce the dimensionality of the grid plane arrays to solve the problem in 2-D.

Create a 3-D sample grid and corresponding values.

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

Select a 2-D sample from the grid. In this case, the third column of samples.

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

The 2-D plane occurs at Y=3, so the Y dimension has been fixed. x, z, and v are 5-by-1-by-5 arrays. You must reduce them to 2-D arrays before evaluating the interpolant.

Reduce x, z, and v down to 2-D arrays using the squeeze function.

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

Interpolate the 2-D slice over a finer grid of query points.

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

Plot the results.

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.

See Also

|

Related Topics