2009-10-04 15 views
9

Ich habe diese HandlungWie markiert man einen Punkt in einem MATLAB-Plot?

[Full Resolution]

alt text

Ich brauche eine gerade vertikale Linie an einem Punkt auf der X-Achse zu machen, dass der Benutzer gibt und zeigen die Koordinaten die Kreuzung dieser vertikalen Linie mit meinem Grundstück.

Wie kann dies in MATLAB getan werden?

zum Beispiel: Der Benutzer gibt 1020 ein, dann wird bei 1020 eine gerade vertikale Linie gezeichnet, die die Kurve an einem Punkt trifft und die Koordinaten dieses Punktes werden irgendwie angezeigt.

Antwort

5

Ein Weg, dies zu tun, ist die Verwendung der GINPUT Funktion, um einen Punkt mit der Maus grafisch auszuwählen. Unter der Annahme, dass die Daten, die Sie gezeichnet haben, in einer Variablen data gespeichert sind, sollte der folgende Code die von Ihnen gewünschte Funktion erfüllen.

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 

Das geht davon aus, dass die oben x-Werte des Graphen sind nur Indizes in die Reihe von Daten, die Sie Plotten, was der Fall aus dem Diagramm zu sein scheint Sie oben zeigen.

3

Versuchen Sie so etwas wie:

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); 

Der Code ist nicht getestet und geht davon aus, dass Ihre Figur der aktuellen ist, die graphisch dargestellten Daten in dem Array „Daten“ gespeichert ist, und dass die ursprüngliche Handlung erfolgt ohne Angabe ein zusätzlicher x-Vektor.

Verwandte Themen