0

我正在尝试在 Matlab 中绘制一些东西。首先,我正在绘制一些 3d 点,然后执行 hold 命令。接下来我绘制一些其他的情节。我只希望我的第一个情节被记住并且永远不会被清除。在 plot 命令执行后,我们将始终删除其他图。

例子:

 plot3(X,Y,Z,'ro');
 hold;

% 现在我将在每次迭代中在这里绘制很多其他的图。% 地块编号 2

 [x,y] = meshgrid(X,Y);
 z = a.*x + b.*y + c';
 mesh(x,y,z);

% plot number 3 - plot number 2 应该被删除

[x,y] = meshgrid(X,Y);
 z = a.*x + b.*y + c';
 mesh(x,y,z);

% plot number 4 - plot number 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# 调用此函数时,我都需要删除以前的绘图(网格)

4

2 回答 2

2

您可以存储绘制网格的句柄并delete在绘制下一个网格之前使用删除它们

 h = mesh(x,y,z);

 delete(h) % deletes the mesh
于 2013-05-03T14:18:30.363 回答
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 来调用它。Thnx :)

于 2013-05-03T15:34:10.507 回答