是否可以将matlab图形存储在mat文件中,其中存储变量。
我遇到了这样的情况,我从存储在mat文件中的变量生成了一些绘图。目前,我将图形作为单独的文件存储,这意味着我有一个用于变量的文件和另一个用于图形的文件。但是我希望将它们捆绑在单个文件中。
是否可以将matlab图形存储在mat文件中,其中存储变量。
我遇到了这样的情况,我从存储在mat文件中的变量生成了一些绘图。目前,我将图形作为单独的文件存储,这意味着我有一个用于变量的文件和另一个用于图形的文件。但是我希望将它们捆绑在单个文件中。
你可不可以在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)
当涉及到大量数据时,使用后者可以节省内存,因为匿名函数对象包含它所需的所有数据,例如在示例中,它拥有自己的“副本” x
和 y
。
zip
是Matlab的一个函数。 - Jonas这里有一篇关于fig文件格式的文章,链接在这里。实际上,fig文件就是一个伪装成mat文件的文件。
因此,您可以将fig文件中的数据存储在结构体中,并将其保存为mat文件,然后加载mat文件并使用您保存的结构体制作出fig文件。
实际上,这很容易做到。
假设您刚刚创建了相关的图形。将图形句柄转换为结构体会产生相应的层次结构元素(包括数据、标签和所有内容),以显示图形。
如果需要,此结构体可以像数据一样保存到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);