如何将无花果存储在.mat文件中?

3

是否可以将matlab图形存储在mat文件中,其中存储变量。

我遇到了这样的情况,我从存储在mat文件中的变量生成了一些绘图。目前,我将图形作为单独的文件存储,这意味着我有一个用于变量的文件和另一个用于图形的文件。但是我希望将它们捆绑在单个文件中。


查看MAT文件的文档,可以得出对第一个问题“是否可能……”的答案是否定的。 - High Performance Mark
4个回答

4

你可不可以在Windows资源管理器中选择这两个文件并将它们压缩成zip文件? ;-)

说真的,虽然我不知道如何精确地做到你想要的(究竟是什么呢?你希望输入load variables.mat并按下回车后图形会弹出吗?),但我有一个解决方法:

你可以将生成此图形所需的命令存储为匿名函数或字符串,并将其与所有其他变量一起保存。然后,在加载.mat文件后,你调用该函数或对该字符串进行eval,即可重新生成图形。

x=sort(rand(1,100)); y=sort(randn(1,100)); %# sample data
makefig = @() plot(x,y,'g.'); %# anonymous figure-generating function
save myDataAndFigure

clear all
load myDataAndFigure
makefig()

或者,使用字符串(例如包含格式和轴标签命令的情况下)

x=sort(rand(1,100)); y=sort(randn(1,100)); %# sample data
figcmd = 'plot(x,y,''g.''); xlabel(''sort(U(0,1)''); ylabel(''sort(N(1,0)'');'
save myDataAndFigure

clear all
load myDataAndFigure
eval(figcmd)

当涉及到大量数据时,使用后者可以节省内存,因为匿名函数对象包含它所需的所有数据,例如在示例中,它拥有自己的“副本” xy


1
zip是Matlab的一个函数。 - Jonas

3

这里有一篇关于fig文件格式的文章,链接在这里。实际上,fig文件就是一个伪装成mat文件的文件。

因此,您可以将fig文件中的数据存储在结构体中,并将其保存为mat文件,然后加载mat文件并使用您保存的结构体制作出fig文件。


1
如何将数据和函数存储在类的实例中,并稍后使用函数绘制数据?

1

实际上,这很容易做到。

假设您刚刚创建了相关的图形。将图形句柄转换为结构体会产生相应的层次结构元素(包括数据、标签和所有内容),以显示图形。

如果需要,此结构体可以像数据一样保存到mat文件中。(事实上就是这样。)要再次将结构体的内容作为图形查看,只需使用struct2handle将其重新转换为句柄即可。

% The line below converts the current figure handle into a struct.
this_fig = handle2struct(gcf) 

% The line below converts the struct "this_fig"  back to a figure handle and displays it.    
h = struct2handle(this_fig,0);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接