¡Como puedo resaltar la intersección de dos o mas líneas en un grafico de guide?

43 visualizaciones (últimos 30 días)
Tengo un grafico de dispersión en donde estoy colocando 2 o mas lineas a graficar, la cuestion es que deseo saber como puedo resaltar o marcar el punto exacto en donde las lineas se intersectan.
Adjunto imagen para mayor referencia.

Respuestas (1)

Constantino Carlos Reyes-Aldasoro
Constantino Carlos Reyes-Aldasoro el 2 de En. de 2024
Hola
Primero, te conviene escribir en ingles porque en espanol hay menos oportunidad de que alguien te ayude.
Con respecto al punto de interseccion de tus lineas, la forma de hacerlo no es con las lineas sino con los datos, ejemplo:
x = 0:10;
y1 = 0:2:20;
y2 = 21:-2:1;
plot(x,y1,'b-o',x,y2,'r-x')
El punto de interseccion estara cerca de 6,
abs(y1-y2)
ans = 1×11
21 17 13 9 5 1 3 7 11 15 19
para encontrar el punto buscas el minimo:
[~,x3]=min(abs(y1-y2))
x3 = 6
y con eso puedes graficar el punto
plot(x,y1,'b-o',x,y2,'r-x',x(x3),(y1(x3)+y2(x3))/2,'m*')
Como veras, el punto de interseccion no esta exactamente en la interseccion, dada la resolucion del eje x. Para que este en el punto exacto necesitas mejor resolucion (en lugar de 0:10, algo como 0:0.1:10).
Espero que esto resuelva tu pregunta.
  2 comentarios
Stephen23
Stephen23 el 3 de En. de 2024
Editada: Stephen23 el 3 de En. de 2024
Nice, but that is not the intersection point (even a finer resolution could miss it).
You can use FZERO to get this (to within numeric precision and the curve-fitting ability of INTERP1):
x0 = 0:10;
y1 = 0:2:20;
y2 = 21:-2:1;
f1 = @(x)interp1(x0,y1,x);
f2 = @(x)interp1(x0,y2,x);
xi = fzero(@(x)f1(x)-f2(x),4)
xi = 5.2500
yi = f1(xi)
yi = 10.5000
yi = f2(xi)
yi = 10.5000
And now we can see the actual intersection point:
plot(x0,y1,'b-o', x0,y2,'r-x', xi,yi,'k+')
Constantino Carlos Reyes-Aldasoro
Constantino Carlos Reyes-Aldasoro el 3 de En. de 2024
Indeed it is not! And that was highlighted in the explanation "Como veras, el punto de interseccion no esta exactamente en la interseccion..." (In Spanish ; - ) The first line was a recommendation to write the questions in English instead of Spanish as this restricts the help that can be received.
The use of fzero is a very neat solution.

Iniciar sesión para comentar.

Categorías

Más información sobre Get Started with MATLAB en Help Center y File Exchange.

Productos


Versión

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by