我知道这是非常基本的,但我是MATLAB的新手。打开.fig文件后,如何在命令窗口中实际使用绘制的数据?我只看到情节。我不确定如何实际获取数据。
答案 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');
您可以通过调用
来检查图形的句柄hget(h)
通过调用
进一步深入研究轴/标题/图例ch=get(h,'Children');
如果您正在使用我的示例中的代码,那么您应该只有一个子图形,即轴。调用轴的子项,你应该有一行。
l=get(ch,'Children');
接下来,调用该行的“Xdata”和“Ydata”字段,即可获得原始数据。
x=get(l,'Xdata');
y=get(l,'Ydata');
如果你有一个比轴更复杂的数字,它会变得更加困难。您需要探索每个孩子以确定它是否是您想从中提取数据的图。
答案 3 :(得分:2)
使用HGLOAD命令。可参考here。