从绘图中提取更精细的数据点

Ben*_*Tan 1 matlab

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

f = openfig('spline.fig');
xdata = get(gco, 'xdata');
ydata = get(gco, 'ydata');
Run Code Online (Sandbox Code Playgroud)

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

Fra*_*kje 6

你得到你的方式ydata不适合我,我会用:

open testfigure.fig 
D = get(gca, 'Children');
ydata = get(D, 'YData'); 
Run Code Online (Sandbox Code Playgroud)

ydata获得的I包含用于绘制图中的原始y数据.

现在,如果您需要更精细的数据分辨率,则必须自己进行插值.以下是如何将其插值ydata为0.1 的简短示例:

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

    xi = 0:0.1:10;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 插值ydata以找到新yixi:

    yi = interp1(xdata, ydata, xi); %// Using the default "linear"
    
    Run Code Online (Sandbox Code Playgroud)

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