Matlab有ginput
用于获取您在图上点击的位置的(x,y)值。但是,假设我绘制了一个带有plot(t, sin(2*pi*t))
的图表。我希望能够让光标在实际情节中移动,通过点击它,我可以得到我的情节的(x,y)坐标(在这种情况下,时间和正弦值)。Matlab通过点击获得(x,y)值图
这可能吗?
Matlab有ginput
用于获取您在图上点击的位置的(x,y)值。但是,假设我绘制了一个带有plot(t, sin(2*pi*t))
的图表。我希望能够让光标在实际情节中移动,通过点击它,我可以得到我的情节的(x,y)坐标(在这种情况下,时间和正弦值)。Matlab通过点击获得(x,y)值图
这可能吗?
当MATLAB数字是开放的,你可以使用数据光标工具,以帮助您通过穿越的情节。
这里有一个简单的例子:
t = 0 : 0.01 : 10;
plot(t, sin(t));
这里是你的阴谋是什么样子,我也强调了,在那里你可以点击数据光标工具的选项。
一旦你点击数据光标选项,点击任意位置上的情节,它会给你一个数据光标提示。在这一点上,你选择,它显示了x
和y
坐标。在你的情况下,x
表示时间,y
表示振幅。
一旦你有一个数据光标尖那里,点击它(黑方块)并拖动它沿着曲线。您将看到数据光标提示更新并沿曲线移动。从你的问题来看,我相信这就是你要找的。
请注意,数据光标提示仅适用于您绘制的点。它不在插值在点之间。因此,如果您想要更精细的分辨率,请在开始点和结束点之间选择更小的步长。
另外,如果你想知道您的一点是确切的指标,情节只是振幅值本身:
plot(sin(t));
的x
轴将绘制每个点的指数,而不是时间值。然后,您可以使用数据光标提示来定位您想要的索引,然后执行您在上面的注释中指定的索引。换句话说:
这告诉我们,在指数304,它为我们提供了一个0.1114价值y
。然后,您可以执行t(304)
来查找幅度为0.1114时的实际时间值。
h = plot(t, sin(2*pi*t)); %// get a handle to the graph
[x, ~] = ginput(1); %// y from ginput not wanted; it will be read from the graph
y = interp1(get(h,'XData'), get(h,'YData'), x); %// interpolate the graph for y
游标如何知道该行?你如何告诉MatLab点击鼠标?你考虑过AutoIT或AutoHotKey吗? – EngrStudent