0

一連のデータの分布を 3D 散布図にプロットしました。

h = scatter3(D1,D2,D3,'.');

保存hしましたが、グラフを再現する必要があります。hD1、D2、D3 を再計算せずにグラフを取得するには、どの関数を呼び出す必要がありますか? D1、D2、D3 の再計算には計算コストがかかるため、グラフが必要なときに毎回実行したくありません。

4

3 に答える 3

2

「グラフの再作成」は、次の情報があれば実行できます。

  1. グラフの作成に使用されるデータ
  2. 使用したグラフの種類
  3. オプションの設定 (色、軸、スケーリング、向きなど)

グラフ (または図) の「ハンドル」は、すべての情報が格納されているメモリを指しますが、それは単なるポインタです。「指し示すもの」を保存しなければ意味がありません。1 つのコマンドでこれを実現する非常に優れた方法があります。Figure を作成したら、次のように入力するだけです。

saveas(gcf, 'myLastGraph.m', 'm');

(「現在の図を取得」 - 最近選択した図のハンドル)の代わりに、gcf保存したいグラフのハンドル (まだ表示されている必要があります) を使用できます (hコード サンプルなど)。これにより、現在のディレクトリに 2 つのファイルが作成されます (2 番目の引数にフル パスを指定すると、代わりにそのディレクトリにファイルが作成されます)。

myLastGraph.fig
myLastGraph.m

これで、すべてのグラフを閉じて、すべての変数をクリアできます。次に、単に実行できます

myLastGraph

コマンド ラインから - ディスクに保存されたデータを使用して、グラフが再作成されます。

于 2013-07-08T17:46:21.690 に答える
0

グラフがまだ開いている場合は、次を使用して Xdata、Ydata、および Zdata を取得できます。

XYZCell=get(get(get(h,'currentaxes'),'children'),{'xdata','ydata','zdata'});

または、セルが必要ない場合:

XData=get(get(get(gcf,'currentaxes'),'children'),'xdata'); YData=get(get(get(gcf,'currentaxes'),'children'),'ydata'); ZData=get(get(get(gcf,'currentaxes'),'children'),'zdata');

グラフが閉じている場合、h役に立たない - 私の知る限り、閉じた図ハンドルからグラフを再形成する方法はありません。

最初に変数を保存しないのはなぜですか?

I1=d1; I2=d2; I3=d3; scatter3(d1,d2,d3,'.');

于 2013-07-08T16:51:52.633 に答える