【问题标题】:Display figure corresponding to certain handle (MATLAB)显示某个句柄对应的图形(MATLAB)
【发布时间】:2014-10-21 06:38:21
【问题描述】:

在我的 MATLAB 代码中,我创建了几个图形并存储了它们的句柄。由于某些操作,所有图形都需要关闭。如何打开与已保存句柄之一对应的图形?

x=0:0.01:1;
y=x.^2;
h1 = plot(x,y);
...
close all
...
"What next?"

【问题讨论】:

  • 自从我有一份 matlab 副本以来已经有一段时间了,但我很确定 close 会删除这个数字。也许你可以通过关闭能见度来逃脱?或者,保存到文件?

标签: matlab plot matlab-figure handle


【解决方案1】:

这与其说是一种有效的解决方案,不如说是一种解决方法,但如果您负担得起创建内存/变量的费用,您可以使用 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)

尽管存在明显的缺点,但希望能有所帮助:)。当然,您可以概括为多个图形和句柄,尽管我重复这可能不是最佳的。这是一个有趣的问题!

【讨论】:

    【解决方案2】:

    如果您有磁盘空间,则在生成图形后,使用hgsave 将它们保存为fig 文件,然后使用hgload 将它们重新加载。

    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;
    

    这将创建一堆图,将它们全部关闭,删除所有内容,然后将其中一个加载回内存。加载的图形将具有所有XDataYData 和其他属性,就好像你从未关闭它一样,所以它仍然是可缩放和可编辑的。

    我没用过,不过你也可以看看savefigopenfig

    【讨论】:

      猜你喜欢
      • 2013-07-04
      • 2011-04-25
      • 2014-05-20
      • 1970-01-01
      • 2014-10-12
      • 1970-01-01
      • 2012-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多