推迟了matlab中的最后一个情节

时间:2013-05-03 14:13:53

标签: matlab plot

我想在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#调用这个函数时,我都需要删除之前的绘图(网格)

2 个答案:

答案 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:)