¡Como puedo resaltar la intersección de dos o mas líneas en un grafico de guide?
27 次查看(过去 30 天)
显示 更早的评论
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.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1579576/image.png)
回答(1 个)
Constantino Carlos Reyes-Aldasoro
2024-1-2
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)
para encontrar el punto buscas el minimo:
[~,x3]=min(abs(y1-y2))
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 个评论
Stephen23
2024-1-3
编辑:Stephen23
2024-1-3
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)
yi = f1(xi)
yi = f2(xi)
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
2024-1-3
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.
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!