2009-10-04 6 views
9

I는 I가 사용자이 좌표를 표시 입력하는 x 축상의 점에서 직선 수직 라인을해야이 플롯을MATLAB 플롯에서 점을 어떻게 표시합니까?

[Full Resolution]

alt text

을 내 음모로 그 수직선의 교차점.

어떻게 이것을 MATLAB에서 할 수 있습니까?

예 : 사용자가 1020을 입력하면 어떤 점에서 플롯과 만나는 직선 수직선이 그려지고 그 점의 좌표가 어떻게 든 표시됩니다.

답변

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 값은 단지 위에서 보여주는 그래프로부터 케이스 것으로 보인다는 플로팅하는 데이터 배열의 인덱스임을 가정한다.

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 벡터.

관련 문제