Come segnare un punto in una trama MATLAB?
-
19-09-2019 - |
Domanda
Non ho questa trama
devo fare scala verticale linea in un punto sull'asse x che la utente immette e mostra le coordinate del punto di intersezione di quella linea verticale con la mia trama.
Come può essere fatto in MATLAB?
per esempio. L'utente immette 1020 poi una linea retta verticale verrà disegnata a 1020 che soddisfa la trama in qualche punto e le coordinate di tale punto verrà mostrato qualche
Soluzione
Un modo per farlo è quello di utilizzare la GINPUT funzione per selezionare graficamente un punto utilizzando il mouse. Supponendo che i dati che si complottato è memorizzato in una data
variabile, il seguente codice dovrebbe fare il genere di cosa che si desidera.
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
Quanto sopra presuppone che i valori x del grafico sono solo indici nella matrice dei dati si sta tracciando, che sembra essere il caso dal grafico mostrate sopra.
Altri suggerimenti
Prova qualcosa di simile:
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);
Il codice non è testato e presuppone che il dato è quello attuale, i dati tracciati viene memorizzato nella "dati" matrice e che la trama originale è stato fatto senza specificare un extra x-vettore.
è anche possibile utilizzare il hline
funzioni e vline,
che può essere scaricato da: http://www.mathworks.com/matlabcentral/fileexchange/1039-hline-and-vline
Lo fanno praticamente lo stesso per voi.