由于MATLAB在R2014b中改变了它的数字引擎,我决定重新运行我的一些代码,以便从中获得更好看的数据。不幸的是,我拥有的最后一个代码需要很长时间才能运行,我想高度避免重新运行代码以获得更好的数字。
我将结果保存在R2013b的.fig
文件中。但是,如果我在R2014b中打开它,它仍然具有旧格式。
是否可以使用MATLAB R2014b绘图引擎重绘图形?如果是的话,我怎么能这样做?
注意:从字面上看,图形是使用新引擎打开和绘制的,但是,它保留了旧格式。虽然一个带有title()
命令的新数字会绘制一个漂亮的大而粗的标题,如果使用" drawow"重绘这个数字。或者我为它生成代码,格式保持不变。
示例:此图是在2013b中创建的,并在2014b中重新绘制。您可以看到标题的绘制格式与title('whatever')
在新图形句柄中绘制的格式相同。它看起来像一个' .fig'保存并设置其生成版本的默认值。因此,重绘时,绘图颜色,标题,标签等看起来就像旧的图形句柄。
可以使用以下代码进行测试。请注意,这是一个过于简化的问题,问题不是关于标题或标签,而是一般的所有图形内容。
rng(1)
figure()
x = 1:50;
y = rand(1, 50);
plot(x,y)
title('this NICE Title')
xlabel('labels!')
ylabel('some other labels','Interpreter','Latex')
如果此代码在2013b和2014b中运行,在两者中保存为fig,然后在两者中打开,则显示下两个数字:
2013b图文件:http://s000.tinyupload.com/index.php?file_id=02053933004513599550
答案 0 :(得分:6)
有一种迂回的方法可以做到这一点 - 只需使用hgopen
来加载数字然后提取数据以在2014b中重新绘制它:
h1=hgopen('test.fig'); % h1 = handle to the figure
allaxes=get(h1,'children'); % allaxes = array with axes handles
for a=1:length(allaxes)
ax=allaxes(a);
allines=get(ax,'children'); % all lines in current axes
for l=1:length(allines)
lin=allines(l);
values=get(lin,'ydata'); % values of the current line
subplots{a}{l}=values;
end
end
然后,您可以使用subplots
单元格数组再次手动制作图表。这是一种无聊的方式,但如果重新生成输出需要很长时间,可能值得尝试。