我想在Matlab中绘制一些东西。首先,我正在绘制一些3d点,然后执行hold命令。接下来我将绘制其他一些情节。我想要记住我的第一个情节,从不清楚。在绘图命令执行后,我们将始终删除其他绘图。
示例:
plot3(X,Y,Z,'ro');
hold;
%现在我将在每次迭代中绘制很多其他图。 %地块编号2
[x,y] = meshgrid(X,Y);
z = a.*x + b.*y + c';
mesh(x,y,z);
%绘图编号3 - 绘图编号2应删除
[x,y] = meshgrid(X,Y);
z = a.*x + b.*y + c';
mesh(x,y,z);
%地块编号4 - 应删除地块编号3
[x,y] = meshgrid(X,Y);
z = a.*x + b.*y + c';
mesh(x,y,z);
... 等等。所以,我想要记住第一个情节。
我正在尝试这样做,但到目前为止我找不到解决方案.Thnx很多:)。
编辑:
我将从c#中调用此函数:
function [] = PlotMatlab(a,b,c,X,Y,Z )
[x,y] = meshgrid(X,Y);
z = a.*x + b.*y + c;
mesh(x,y,z);
end
...所以每当我从c#调用这个函数时,我都需要删除之前的绘图(网格)
答案 0 :(得分:2)
您可以存储绘制网格的句柄,并在绘制下一个网格之前使用delete
删除它们
h = mesh(x,y,z);
delete(h) % deletes the mesh
答案 1 :(得分:0)
好的,它正在运作。现在这是我的功能。
function [] = PlotMatlab(a,b,c,X,Y,Z,n)
if n > 1
items = get(gca, 'Children');
delete(items(1));
end
[x,y] = meshgrid(X,Y);
z = a.*x + b.*y + c;
mesh(x,y,z);
end
如果我发送n = 1,它将不会删除任何内容,如果我发送n> 1它将删除最后一个图。正是我需要的。现在,每当我想要删除最后一个图时,我就用n = 2来调用它.Tnnx:)