我想编辑另存为.fig(MATLAB的默认格式)文件的MATLAB图形的某些属性。
我在脚本中创建了许多图形密集型图形,因此我选择不通过使默认图形不可见来显示它们set(0,'DefaultFigureVisible','off')
。这会将'Visible'
任何新图形的属性设置为'off'
。这样,我就可以创建,编辑,保存等图形,而无需绘制它们,这可能会增加CPU,GPU及其内存的负担。我使用saveas(handle,'filename.fig')
命令将图形另存为.fig文件。这也保存了'Visible'
属性,当我确实要打开图形时(例如,通过在Windows资源管理器中双击文件),这是一个问题。它会加载该图,但由于其'Visible'
属性设置为,因此不会显示它'off'
。
我希望将所有.fig文件保存为属性设置为'on'
,但是如何在不显示数字的情况下实现此目的?我使用的那一刻set(handle,'Visible','on')
,该图已绘制。
因此,基本上,我想比在MATLAB中将其作为图形加载时在更低的级别上编辑文件。
我认为可以按照以下步骤进行操作,但是我不知道该如何实现。可以使用加载.fig数据,就好像它是.mat文件一样s=load('filename.fig','-mat');
。这将加载一个结构s
,该结构包含一些包含所有地物数据,属性等的字段。现在,必须在该未知结构中找到地物控柄,并且必须'Visible'
编辑该控柄附带的属性。
可以在不绘制图形的情况下完成此操作吗?
我尝试过,但都没有成功,使用fopen
,fread
和他们的朋友。
有人知道我该怎么做吗?
我的解决方案基于user4506754发布的URL上的线程:http : //www.mathworks.com/matlabcentral/newsreader/view_thread/306249在那里,Jesse Hopkins帖子(第15条)可以编辑属性'ResizeFcn'
以执行功能当MATLAB创建图形时。这在我的MATLAB安装上不起作用,但是使我研究了可以附加到图形属性中的不同函数。此页面记录了所有图形属性:http : //mathworks.com/help/matlab/ref/figure-properties.html。在那里我找到了'CreateFcn'
财产。其说明包含:
该属性指定在MATLAB创建图形时要执行的回调函数。MATLAB在执行CreateFcn回调之前初始化所有图形属性值。
这意味着该图将加载其属性,包括该'Visible'
属性'off'
然后'CreateFcn'
被调用。
设置'CreateFcn'
使图形可见即可解决我的问题。
set(gcf,'CreateFcn','set(gcf,''Visible'',''on'')')
一个例子:
ezplot(@sin) % draw a simple figure containing a sine wave, title, etc.
set(gcf,'Visible','off','CreateFcn','set(gcf,''Visible'',''on'')' % this disables the figure and set the 'CreateFcn' property simultaneously
saveas(gcf,'sin.fig') % save the figure in the current folder as a .fig file
close % closes current figure
现在转到资源管理器中的当前文件夹,然后双击sin.fig文件。它使MATLAB加载它,并噗,图中绘制。
找到解决方案。
正如我最初要求的那样,这不会编辑.fig文件(作为解决方案),但这是原始问题的替代解决方案。现在,我可以创建和保存图形,而不会看到它们,而是在MATLAB加载图形后立即绘制它们。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句