2013-05-03 43 views
0

我想在Matlab中繪製一些東西。首先我繪製一些3d點,然後執行保持命令。接下來我繪製一些其他情節。我只想記住我的第一個情節,永遠不會清醒。在繪圖命令執行後,其他繪圖總是會被刪除。暫緩只是在matlab中的最後一塊圖

例子:

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

確定它正在工作。現在這是我的功能。

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

2

在繪製下一個網格之前,您可以存儲繪製網格的手柄並使用delete刪除它們。

h = mesh(x,y,z); 

delete(h) % deletes the mesh 
+0

...這是一個好主意,但我需要從C#調用此。請閱讀我編輯的代碼。我在閱讀你的答案後編輯了它。抱歉。 – Panarit 2013-05-03 14:23:35

+0

@Addon當從C#調用matlab時,這不起作用嗎? 請注意,它也適用於'plot',而不僅僅是'mesh'。 – 2013-05-03 14:27:49

+0

@Addon:沒問題。有關類似的問題,請參閱http://stackoverflow.com/questions/11419209/in-matlab-how-does-one-clear-the-last-thing-plotted-to-a-figure。其中一個未被接受的答案將對你的情況有所幫助。 – 2013-05-03 14:28:19