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

51 ビュー (過去 30 日間)
Ivan
Ivan 2023 年 12 月 31 日
編集済み: Stephen23 2024 年 1 月 3 日
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.

回答 (1 件)

Constantino Carlos Reyes-Aldasoro
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)
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 件のコメント
Stephen23
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)
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 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 ExchangeGet Started with MATLAB についてさらに検索

製品


リリース

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by