在我的MATLAB代码中,我创建了几个数字并存储它们的句柄 . 由于某些操作,所有数字都需要关闭 . 如何打开与其中一个保存手柄对应的图形?
x=0:0.01:1; y=x.^2; h1 = plot(x,y); ... close all ... "What next?"
这更像是一种解决方法,而不是一种有效的解决方案,但是如果你能负担内存/变量的创建,你可以使用getframe在图形打开时保存图形的内容,并在它关闭后再次显示:
clc clear x = 1:10; y = sin(x); y2 = cos(x); h1 = plot(x,y); h1Frame = getframe(gcf); MyData = h1Frame.cdata; h2 = plot(x,y2); close all imshow(MyData)
希望尽管有明显的弊端:)当然,你可以推广多个数字和句柄,虽然我重申这可能不是最优的 . 这是一个有趣的问题!
如果您有磁盘空间,在生成数字后,使用hgsave将它们保存为 fig 文件,然后使用hgload将其加载回来 .
fig
n = 1:10; x = 0:0.01:1; K = length(n) for k = 1:K h = figure(k) y = x.^n(k); plot(x,y) hgsave(h,sprintf('PowerPlot_n=%d',n(k))); end close all clear all hgload('PowerPlot_n=4.fig') %for instance h = gca;
这将创建一堆图,关闭它们,删除所有内容,然后将其中一个加载回内存 . 加载的数字将包含所有 XData 和 YData 以及其他属性,就像您从未关闭它一样,因此它仍然可以缩放和编辑 .
XData
YData
我没有使用它们,但您可能还想看看savefig和openfig .
2 回答
这更像是一种解决方法,而不是一种有效的解决方案,但是如果你能负担内存/变量的创建,你可以使用getframe在图形打开时保存图形的内容,并在它关闭后再次显示:
希望尽管有明显的弊端:)当然,你可以推广多个数字和句柄,虽然我重申这可能不是最优的 . 这是一个有趣的问题!
如果您有磁盘空间,在生成数字后,使用hgsave将它们保存为
fig
文件,然后使用hgload将其加载回来 .这将创建一堆图,关闭它们,删除所有内容,然后将其中一个加载回内存 . 加载的数字将包含所有
XData
和YData
以及其他属性,就像您从未关闭它一样,因此它仍然可以缩放和编辑 .我没有使用它们,但您可能还想看看savefig和openfig .