代码之家  ›  专栏  ›  技术社区  ›  user59419

Matlab中数据的范围和增量

  •  0
  • user59419  · 技术社区  · 10 年前

    让我们考虑一下我得到了一个图,我没有它的x和y向量,但我想在Matlab中从图中提取它们。我还想知道水平轴和垂直轴(x和y轴)上的数据增量(步长)。 我想使用:

    h=gca             % Get current axis
    X=get(h,'xdata');
    Y=get(h,'ydata');
    stepsize=X(2)-X(1);
    

    但这些命令会产生一条错误消息: xdata和ydata不是axis的可访问属性。任何关于如何找到任何给定曲线的x和y向量的建议。

    2 回复  |  直到 10 年前
        1
  •  1
  •   Dev-iL    10 年前

    如果我理解正确,您需要了解以下两件事:

    1. 您有一个图形,其中包含任意二维线的绘图 x_vec, y_vec 您不知道,您希望从图形\轴中提取它们。
    2. 你想得到 xtick ytick 图中使用的位置。

    代码无法工作的原因是您试图访问 axes ,而你 希望 访问是 line (即图中的曲线)。

    解决您的 第一 问题,您可以使用以下方法:

    手册 :使用 edit plot 图形工具,您可以使用 XData YData 线路的财产,如下所示:

    How to get to a line's XData manually

    程序化的 :您需要找到 handle (即指针),然后在 那个 手柄(不在 gca ):

    %// If there's only one entity (child) in the axes:
    hLine = get(gca,'Children');
    %// If there's more than one child:
    hChildren = findobj(gca,'Type','line');
    hLine = hChildren(1); %// Or any other logic you need to pick the correct line
    %// Then comes your code:
    xD = get(hLine,'XData'); yD = get(hLine,'YData');
    

    对于 第二 您可以使用的问题 通用化学分析 得到 XTick YTick :

    xT = get(gca,'XTick'); yT = get(gca,'YTick');
    

    为了获得步长,我建议使用 diff() .

        2
  •  0
  •   shark1608    10 年前

    我不太明白你的问题。你是说得到曲线的x和y数据?如果是的话,那么也许这会有助于研究“ginput”。

    例如,从地物窗口拾取10个点,可以使用以下命令

    [x,y] = ginput(10)