我如何从Matlab图中获取特定值

时间:2014-07-31 11:57:33

标签: matlab plot matlab-figure

我想从Matlab图中获得一些特定的值。值的数量可以是3,5,10,50或任何N整数。就像样本图片一样,

Pic1 Pic2

我希望以A =(430,0.56)的形式得到A,B,C的值。

A,B,C不是Plot的一部分。我只是在Photoshop中编写它们帮助澄清问题。

注意:每次执行代码时,输​​入值都可能不同。

输入值(图表值)的长度也可以每次都改变。

3 个答案:

答案 0 :(得分:1)

首先打开图形,然后用

获取线条的x和y坐标
line = get(gca, 'Children');   % Get the line object in the current axis of the figure.
x = get(line, 'XData');   % Get the abscissas.
y = get(line, 'YData');   % Get the ordinates.

要在横坐标大于或等于yi的点上获得值xi,您可以写

id = find(x>=xi, 1, 'first');   % On the opposite try find(x<=xi, 1, 'last');
yi = y(id);

或者你可以进行线性插值

yi = interp1(x, y, xi);

要提取横坐标为x1x2的点之间的值,您可以遵循这两种策略。第一个你可以写

ids = find(x>=x1 & x<=x2);
xReduced = x(ids);   % A subset of x.
yReduced = y(ids);   % A subset of y.

第一行与x1后面的点集合与x2之前的点集相交,并返回索引。如果您选择插值,则可以构造一组新的点,并在该集合上进行插值。

xReduced = x1:step:x2;   % As an alternative you can use linspace(x1, x2, nPoints);
yReduced = interp1(x, y, xReduced);

答案 1 :(得分:0)

如果你有一个图表而你只想找出图表上任意点的值,你可以使用ginput函数,或者到目前为止最简单的解决方案就是使用 interactive {{ 3}} 内置于图窗口中。

答案 2 :(得分:0)

hc=get(gca,'children');
data=get(hc,{'xdata','ydata'});
t=data{1};
y=data{2};
tA=250;tB=1000; %tA is starting Point and tB is the last point of data as ur figure
yinterval=y(t>=tA & t<=tB);
display(yinterval);

试试这段代码,它为我工作代码是根据时间和Y的数字。