В этом примере показано, как уменьшить размерность массивов плоскостей сетки 3-D решить 2-D задачу интерполяции.
В некоторых областях применения может потребоваться интерполяция нижней размерной плоскости сетки; для примера, интерполяция плоскости 3-D сетки. При извлечении плоскости сетки из 3-D сетки получившиеся массивы могут быть в 3-D формате. Можно использовать squeeze
функция для уменьшения размерности массивов сеточных плоскостей, чтобы решить проблему в 2-D.
Создайте 3-D матрицу образцов и соответствующие значения.
[X,Y,Z] = ndgrid(1:5); V = X.^2 + Y.^2 +Z;
Выберите 2-D выборку из сетки. В этом случае - третий столбец выборок.
x = X(:,3,:); z = Z(:,3,:); v = V(:,3,:);
Плоскость 2-D происходит в Y=3
, так что Y
размерность был фиксируема. x
, z
, и v
являются массивами 5 на 1 на 5. Перед оценкой интерполяции необходимо уменьшить их до 2-D массивов.
Уменьшите x
, z
, и v
вплоть до 2-D массивов с помощью squeeze
функция.
x = squeeze(x); z = squeeze(z); v = squeeze(v);
Интерполируйте срез 2-D по более мелкой сетке точек запроса.
[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');