gpt4 book ai didi

matlab - 如何在不显示的情况下编辑保存在 .fig 文件中的图形的属性

转载 作者:太空宇宙 更新时间:2023-11-03 20:29:05 24 4
gpt4 key购买 nike

我想编辑保存为 .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 中作为图形加载时更低的级别编辑文件。

我认为可以按如下方式完成,但我不知 Prop 体如何实现。可以使用 s=load('filename.fig','-mat'); 加载 .fig 的数据,就好像它是 .mat 文件一样。这将加载一个结构 s,其中包含一些字段,这些字段包含图形的所有数据、属性等。现在,必须在这个未知结构和 'Visible' 中找到图形句柄与编辑的句柄一起出现的属性。

这可以在不绘制图形的情况下完成吗?

我尝试过,但没有成功,使用 fopenfread 和他们的 friend 。

有人知道如何做我想做的事吗?

最佳答案

我的解决方案基于 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' 属性。它的描述包含:

This property specifies a callback function to execute when MATLAB creates the figure. MATLAB initializes all figure property values before executing the CreateFcn callback.

这意味着图形加载了它的属性,包括 '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 加载图形时立即绘制图形。

关于matlab - 如何在不显示的情况下编辑保存在 .fig 文件中的图形的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28174583/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com