首页 文章

Matlab中数据的范围和增量

提问于
浏览
0

让我们考虑给我一个情节,我没有它的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 回答

  • 0

    如果我理解正确,这些是你想知道的两件事:

    • 你有一个数字包含一些任意2d线的图,你的 x_vec, y_vec 是未知的,你想从图\轴中提取它们 .

    • 您想要获得图中使用的 xtickytick 个位置 .


    你的代码不起作用的原因是因为你试图访问 axes 的属性,而你想要访问的是 line 的属性(即图中的曲线) .

    要解决 first 问题,可以使用以下方法:

    Manual :使用 edit plot figure工具,您可以按以下方式访问该行的 XDataYData 属性:

    How to get to a line's XData manually

    Programmatic :你需要找到该行的 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');
    

    对于 second 问题,您可以使用 gca 获取 XTickYTick

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

    要获得步长,我建议只使用 diff() .

  • 1

    我不确定我是否理解你的问题 . 你的意思是获得曲线的x和y数据?如果是,那么也许它会帮助调查'ginput' .

    例如,从图形窗口中选取10个点,您可以使用以下命令

    [x,y] = ginput(10)
    

相关问题