我知道这真的很基础,但我是 MATLAB 新手。打开 .fig 文件后,您如何在命令窗口中实际处理绘制的数据?我看到的只是情节。我不确定如何实际获取数据。
问问题
65384 次
4 回答
19
实际上,您甚至不必为了获取数据而显示图形。FIG 文件以标准 Matlab MAT 格式存储,您可以使用内置的load()函数读取该格式。图形句柄和数据存储在您可以轻松理解和处理的结构中。
于 2010-12-11T16:31:44.210 回答
13
这是一个非常简单的方法:
单击要从中获取数据的对象。不会有任何迹象表明您已单击它。
>> 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
于 2010-06-07T11:37:07.647 回答
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');
如果你有一个比轴更复杂的图形,它会变得更难一些。您需要探索每个孩子以确定它是否是您要从中提取数据的情节。
于 2010-06-04T18:40:10.043 回答
2
使用 HGLOAD 命令。此处提供参考。
于 2010-06-04T17:51:55.073 回答