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

52 vues (au cours des 30 derniers jours)
Ivan
Ivan le 31 Déc 2023
Modifié(e) : Stephen23 le 3 Jan 2024
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.

Réponses (1)

Constantino Carlos Reyes-Aldasoro
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 commentaires
Stephen23
Stephen23 le 3 Jan 2024
Modifié(e) : Stephen23 le 3 Jan 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
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.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Get Started with MATLAB dans Help Center et File Exchange

Produits


Version

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by