Трисурф не может нанести на указанную ось

Я хотел бы сделать треугольный участок поверхности через функцию trisurf, ориентируясь на указанную ось. Однако в документации MATLAB не указан какой-либо синтаксис для этого. Когда я открываю функцию, я получаю следующие первые строки:

function hh = trisurf(tri,varargin)
%TRISURF Triangular surface plot
%   TRISURF(TRI,X,Y,Z,C) displays the triangles defined in the M-by-3
%   face matrix TRI as a surface.  A row of TRI contains indexes into
%   the X,Y, and Z vertex vectors to define a single triangular face.
%   The color is defined by the vector C.
%
%   TRISURF(TRI,X,Y,Z) uses C = Z, so color is proportional to surface
%   height.
%
%   TRISURF(TR) displays the triangles in the triangulation TR. It uses
%   C = TR.X(:,3) to color the surface proportional to height.
%
%   H = TRISURF(...) returns a patch handle.
%
%   TRISURF(...,'param','value','param','value'...) allows additional
%   patch param/value pairs to be used when creating the patch object. 
%
%   Example:
%
%   [x,y] = meshgrid(1:15,1:15);
%   tri = delaunay(x,y);
%   z = peaks(15);
%   trisurf(tri,x,y,z)
%
%   % Alternatively
%   tr = triangulation(tri, x(:), y(:), z(:));
%   trisurf(tr)
%
%   See also PATCH, TRIMESH, DELAUNAY, triangulation, delaunayTriangulation.
%   Copyright 1984-2017 The MathWorks, Inc.
narginchk(1,inf);
ax = axescheck(varargin{:});
ax = newplot(ax);
start = 1;

Ввод функции не определяется так же, как vararginкак это сделано в функции surf например, поэтому невозможно указать дескриптор оси в качестве первой входной переменной. Если дескриптор оси указан в качестве второй входной переменной, функция axescheck распознаю дескриптор, но позже я получаю ошибку, потому что ожидаемой второй входной переменной является вектор. Если дескриптор оси указан в качестве третьей входной переменной, функция axescheck не распознает ручку вообще.

Я знаю, что могу сначала активировать ось, а затем вызвать trisurf, но у меня это внутри цикла, так что делать это не рекомендуется. Есть ли другое решение?

2 ответа

Если у вас есть дескриптор осей того, который вас интересует, то вы можете сделать текущую ось такой,axes(youraxeshandle)и просто использовать trisurf без какого-либо конкретного ввода. Он должен быть добавлен к текущей оси, которая является той, которую вы выбрали.

Поскольку это все еще без ответа:

trisurfсоздаетPatchобъект, который, как и большинство графических объектов, имеетParentсвойство.

      % ax1 is the handle of you first axis
trisurf(k, x, y, z, 'Parent', ax1)
Другие вопросы по тегам