1

我想从我在 matlab 中的绘图中提取数据。因此,我做了以下事情:

f = openfig('spline.fig');
xdata = get(gco, 'xdata');
ydata = get(gco, 'ydata');

这确实分别给了我 和 的数据点x,但在每个点之间y有一个步骤(例如1、1.5、2、2.5 ...)。我希望获得比这更好的数据点(例如1、1.1、1.2、1.3、1.4...),以及与这些 x 坐标对应的 y 坐标。我怎样才能做到这一点?0.5

4

1 回答 1

6

你得到你的方式ydata对我不起作用,我会使用:

open testfigure.fig 
D = get(gca, 'Children');
ydata = get(D, 'YData'); 

我获得的ydata包含用于绘制图形的原始 y 数据。

现在,如果您需要更精细的数据分辨率,您将不得不自己进行插值。这是如何将其插入ydata到 0.1 分辨率的简短示例:

  1. 定义新的 x 值 xi 以找到 y 值

    xi = 0:0.1:10;
    
  2. 插值ydata以在 处找到新yixi

    yi = interp1(xdata, ydata, xi); %// Using the default "linear"
    

您应该阅读您想要使用的方法类型(例如 最近邻样条),这取决于您的数据和要求。

于 2013-09-11T08:03:15.317 回答