我想从matlab中绘制的图表中提取数据。因此,我做了以下事情:
f = openfig('spline.fig');
xdata = get(gco, 'xdata');
ydata = get(gco, 'ydata');
这确实分别给出了x
和y
的数据点,但每个点之间的步长为0.5
(例如 1,1.5, 2,2.5 ......)。我希望得到比这更精细的数据点(例如 1,1.1,1.2,1.3,1.4 ......),以及相应的y坐标到这些x坐标。我怎么能这样做?
答案 0 :(得分:6)
你获得ydata
的方式对我不起作用,我会用:
open testfigure.fig
D = get(gca, 'Children');
ydata = get(D, 'YData');
我获得的ydata
包含用于绘制图形的原始y数据。
现在,如果您需要更精细的数据分辨率,您必须自己进行插值。
以下是如何将此ydata
插值为0.1:
定义新的x值xi以查找
的y值xi = 0:0.1:10;
在ydata
处插入yi
以查找新的xi
值:
yi = interp1(xdata, ydata, xi); %// Using the default "linear"
您应该阅读您想要使用的方法(例如 nearest neighbour,spline),这取决于您的数据和要求。