我想从Matlab图中获得一些特定的值。值的数量可以是3,5,10,50或任何N整数。就像样本图片一样,
我希望以A =(430,0.56)的形式得到A,B,C的值。
A,B,C不是Plot的一部分。我只是在Photoshop中编写它们帮助澄清问题。
注意:每次执行代码时,输入值都可能不同。
输入值(图表值)的长度也可以每次都改变。
答案 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);
要提取横坐标为x1
和x2
的点之间的值,您可以遵循这两种策略。第一个你可以写
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的数字。