8

MATLABでは、さまざまなベクトルを図形にプロットします。さて、私がやりたいのは、他のすべてをクリアすることなく、その図にプロットした最後のベクトルを単に元に戻すことです。これはどのように達成できますか?それは達成できますか?

ありがとう

編集:

figure(1); clf(1);
N = 100;
x = randn(1,N);
y = randn(1,N);
z = sin(1:N);
plot(x); hold on;
plot(y,'r');
plot(z,'k'); 

ここで、最後に作成したプロットzを削除します。

4

3 に答える 3

9

プロットする前に、後でもう一度削除したいことがわかっている場合は、によって返されたハンドルと後でそれを保存できplotますdelete

figure;
h1 = plot([0 1 2], [3 4 5]);
delete(h1);
于 2012-07-10T18:15:26.880 に答える
8

試す

items = get(gca, 'Children');
delete(items(end));

(または多分delete(items(1))

于 2012-07-10T18:05:37.987 に答える
3

@groovingandiが与える答えは、一般的にそれを行うための最良の方法です。FINDALLを使用して、オブジェクトのプロパティに基づいてハンドルを検索することもできます。

h = findall(gca, 'type', 'line', 'color', 'k');
delete(h);

これにより、現在の軸で、黒色のすべてのラインオブジェクト(プロッ​​トはラインオブジェクトを生成します)を検索します。

たとえば、図9でこれを行うには、図9の軸を見つける必要があります。図のハンドルは単に図の番号なので、次のようになります。

ax = findall(9, 'axes');
h = findall(ax, 'type', 'line', 'color', 'k');
delete(h);
于 2012-07-10T18:37:07.390 に答える