2009-10-04 15 views
9

tengo esta parcela¿Cómo marcar un punto en una trama de MATLAB?

[Full Resolution]

alt text

Necesito hacer una escalera línea vertical en un punto sobre el eje X que el usuario entra y muestran las coordenadas de la intersección de esa línea vertical con mi trazado.

¿Cómo se puede hacer esto en MATLAB?

por ejemplo: el usuario ingresa 1020 y luego se dibujará una línea recta vertical en 1020 que coincida con la trama en algún punto y las coordenadas de ese punto se mostrarán de alguna manera.

Respuesta

5

Una forma de hacerlo es utilizar la función GINPUT para seleccionar gráficamente un punto con el mouse. Suponiendo que los datos que trazó se almacenan en una variable data, el siguiente código debería hacer el tipo de cosas que desee.

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 

Lo anterior supone que los valores x de la gráfica son sólo índices en la matriz de datos que está trazado, que parece ser el caso de la gráfica que muestra anteriormente.

3

Pruebe algo como:

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

El código no se ha probado y se supone que su figura es la actual, los datos representados se almacena en los "datos" matriz y que la trama original fue hecho sin especificar un extra de x-vector.

Cuestiones relacionadas