私はこのプロットを持っています
[ フル解像度 ]
その垂直線のユーザーが入力および交点の座標を表示であるx軸上の点に直線垂直線を作成する必要があります私のプロットで。
これはMATLABでどのように実行できますか?
例:ユーザーが1020と入力すると、1020に直線の垂直線が描画され、ある点でプロットと一致し、その点の座標が何らかの形で表示されます。
これを行う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値が、プロットしているデータの配列への単なるインデックスであると想定しています。これは、上記のグラフの場合のようです。
次のようなものを試してください:
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ベクトルを指定せずに実行されたと想定しています。
次の場所からダウンロードできる関数hline
およびvline,
を使用することもできます。 http://www.mathworks.com/matlabcentral/fileexchange/1039-hline-and-vline
彼らはあなたのために実質的に同じことをします。