Этот пример показывает, как уменьшать размерность массивов плоскости сетки в 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
была зафиксирована. x
, z
и v
5 массивами 1 на 5. Необходимо уменьшать их до 2D массивов прежде, чем оценить interpolant.
Уменьшайте x
, z
и 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');