Yai*_*man 17
实际上,您甚至不必显示图形以获取数据.FIG文件以标准的Matlab MAT格式存储,您可以使用内置的load()函数读取.图形句柄和数据存储在您可以轻松理解和处理的结构中.
小智 13
这是一个非常简单的方法:
单击要从中获取数据的对象.没有任何迹象表明您已点击它.
>> xd = get(gco,'XData');
>> yd = get(gco,'YData');
Run Code Online (Sandbox Code Playgroud)
有时可能很难点击该行或其他对象本身.如果您遇到此问题,请单击包含您感兴趣的子项的轴,然后:
>> kids = get(gca,'Children');
Run Code Online (Sandbox Code Playgroud)
这将为您提供各种孩子的句柄数组.您可以尝试通过索引到孩子中逐个获取一个,或使用以下内容一次获取所有数据.这会将结果作为单元格数组返回,如果您之前没有使用它们,这可能有点棘手:
>> xd = get(kids,'XData');
>> yd = get(kids,'YData');
>> xd1 = xd{1}; %# X Data from first line
Run Code Online (Sandbox Code Playgroud)
Dor*_*oom 10
尝试hgload,然后围绕它返回的图形句柄结构.例如,如果您绘制并保存以下内容:
x=0:.01:10;
y=sin(x);
h=plot(x,y);
saveas(h,'testfigure.fig');
Run Code Online (Sandbox Code Playgroud)
清除工作区,并使用hgload打开保存的图形:
clear
close all
h=hgload('testfigure.fig');
Run Code Online (Sandbox Code Playgroud)
您可以通过调用来检查图形的手柄h
get(h)
Run Code Online (Sandbox Code Playgroud)
或者通过致电深入研究轴/标题/传说
ch=get(h,'Children');
Run Code Online (Sandbox Code Playgroud)
如果您在我的示例中使用代码,那么您应该只有一个子图形,即轴.打电话给轴的孩子,你应该有一条线.
l=get(ch,'Children');
Run Code Online (Sandbox Code Playgroud)
接下来,调用该行的"Xdata"和"Ydata"字段,即可得到原始数据.
x=get(l,'Xdata');
y=get(l,'Ydata');
Run Code Online (Sandbox Code Playgroud)
如果你有一个比轴更复杂的数字,它会变得更加困难.您需要探索每个孩子以确定它是否是您想要从中提取数据的图.