9

私はこのプロットを持っています

[フル解像度]

代替テキスト

ユーザーが入力するx軸上の点に直線の垂直線を作成し、その垂直線とプロットとの交点の座標を表示する必要があります。

これはMATLABでどのように実行できますか?

たとえば、ユーザーが1020と入力すると、1020で直線の垂直線が描画され、あるポイントでプロットと一致し、そのポイントの座標が何らかの形で表示されます。

4

3 に答える 3

5

これを行う1つの方法は、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);

コードはテストされておらず、図が現在のものであり、プロットされたデータが配列「data」に格納され、元のプロットが追加のxベクトルを指定せずに実行されたと想定しています。

于 2009-10-04T17:17:22.903 に答える
0

次の関数hlineからvline,ダウンロードすることもできます:http://www.mathworks.com/matlabcentral/fileexchange/1039-hline-and-vline

彼らはあなたのために実質的に同じことをします。

于 2014-10-29T12:26:13.950 に答える