9

我有这个情节

[全分辨率]

替代文字

我需要在用户输入的 x 轴上的一点上画一条垂直线,并显示该垂直线与我的绘图相交的坐标。

如何在 MATLAB 中做到这一点?

例如:用户输入 1020,然后将在 1020 处绘制一条垂直线,在某个点与绘图相交,并且该点的坐标将以某种方式显示。

4

3 回答 3

5

一种方法是使用GINPUT函数以图形方式使用鼠标选择一个点。假设您绘制的数据存储在一个变量data中,下面的代码应该做您想做的事情。

set(gca,'XLimMode','manual','YLimMode','manual');  % Fix axes limits
hold on;
[x,y] = ginput(1);  % Select a point with the mouse
x = round(x);       % Round x to nearest integer value
y = data(x);        % Get y data of intersection
plot([x x],get(gca,'YLim'),'k--');  % Plot dashed line
plot(x,y,'r*');     % Mark intersection with red asterisk
disp('Intersection coordinates:');
disp([x y]);        % Display the intersection point

以上假设图表的 x 值只是您正在绘制的数据数组的索引,从您上面显示的图表看来就是这种情况。

于 2009-10-04T17:16:52.163 回答
3

尝试类似:

x = 1020;

% plot a vertical line
ylimits = get(gca, 'YLim');
hold on;
plot([x x], ylimits, 'k');

% mark the intersection with the plot
plot(x, data(x), 'ro');
annot = sprintf('Intersection: x=%f, y=%f', x, data(x));
text(x, data(x), annot);

该代码未经测试,并假定您的图形是当前图形,绘制的数据存储在数组“数据”中,并且原始绘图是在未指定额外 x 向量的情况下完成的。

于 2009-10-04T17:17:22.903 回答
0

您还可以使用这些功能hlinevline,可以从以下网址下载:http: //www.mathworks.com/matlabcentral/fileexchange/1039-hline-and-vline

他们对你几乎是一样的。

于 2014-10-29T12:26:13.950 回答