如何从MATLAB中的.fig文件中提取数据?

时间:2010-06-04 17:46:51

标签: matlab file plot figure

我知道这是非常基本的,但我是MATLAB的新手。打开.fig文件后,如何在命令窗口中实际使用绘制的数据?我只看到情节。我不确定如何实际获取数据。

4 个答案:

答案 0 :(得分:17)

实际上,您甚至不必显示图形以获取数据。 FIG文件以标准的Matlab MAT格式存储,您可以使用内置的 load() 函数进行读取。图形句柄和数据存储在您可以轻松理解和处理的结构中。

答案 1 :(得分:12)

这是一个非常简单的方法:

单击要从中获取数据的对象。没有任何迹象表明您已点击它。

>> xd = get(gco,'XData');
>> yd = get(gco,'YData');

有时可能很难点击该行或其他对象本身。如果您遇到此问题,请单击包含您感兴趣的子项的轴,然后:

>> kids = get(gca,'Children');

这将为您提供各种孩子的句柄数组。您可以尝试通过索引到孩子中逐个获取一个,或使用以下内容一次获取所有数据。这会将结果作为单元格数组返回,如果您之前没有使用它们,这可能有点棘手:

>> xd = get(kids,'XData');
>> yd = get(kids,'YData');
>> xd1 = xd{1}; %# X Data from first line

答案 2 :(得分:10)

尝试hgload,然后围绕它返回的图形句柄结构。例如,如果您绘制并保存以下内容:

x=0:.01:10;
y=sin(x);
h=plot(x,y);
saveas(h,'testfigure.fig');

清除工作区,然后使用hgload:

打开保存的图形
clear
close all
h=hgload('testfigure.fig');

您可以通过调用

来检查图形的句柄h
get(h)

通过调用

进一步深入研究轴/标题/图例
ch=get(h,'Children');

如果您正在使用我的示例中的代码,那么您应该只有一个子图形,即轴。调用轴的子项,你应该有一行。

l=get(ch,'Children');

接下来,调用该行的“Xdata”和“Ydata”字段,即可获得原始数据。

x=get(l,'Xdata');
y=get(l,'Ydata');

如果你有一个比轴更复杂的数字,它会变得更加困难。您需要探索每个孩子以确定它是否是您想从中提取数据的图。

答案 3 :(得分:2)

使用HGLOAD命令。可参考here