¡Como puedo resaltar la intersección de dos o mas líneas en un grafico de guide?
조회 수: 50 (최근 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.
참고 항목
카테고리
Help Center 및 File Exchange에서 Get Started with MATLAB에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!