Интерполяция 2D выборов в 3-D сетках

В этом примере показано, как уменьшать размерность массивов плоскости сетки в 3-D, чтобы решить 2D задачу интерполяции.

В некоторых областях применения может быть необходимо интерполировать более низкую размерную плоскость сетки; например, интерполируя плоскость 3-D сетки. Когда вы извлекаете плоскость сетки из 3-D сетки, полученные массивы могут быть в 3-D формате. Можно использовать squeeze функция, чтобы уменьшать размерность массивов плоскости сетки, чтобы решить задачу в 2D.

Создайте 3-D демонстрационную сетку и соответствующие значения.

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

Выберите 2D выборку из сетки. В этом случае, третий столбец выборок.

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

2D плоскость происходит в Y=3, так Y размерность была зафиксирована. xZ, и v 5 массивами 1 на 5. Необходимо уменьшать их до 2D массивов прежде, чем оценить interpolant.

Уменьшайте xZ, и v вниз к 2D массивам с помощью squeeze функция.

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

Интерполируйте 2D срез по более прекрасной сетке точек запроса.

[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 contains an object of type surface.

Смотрите также

|

Похожие темы