# using the find function to find intersection of two lines

1 visualización (últimos 30 días)
shobhit mehrotra el 15 de Abr. de 2015
Comentada: Renato Agurto el 16 de Abr. de 2015
Hi,
I have a vector A :
A = [ 10 20 30 40 50 60 50 40 30 20 10]
I want to find the nearest index where it crosses 18, so in this case it would be 2 and 10.
AA = find(A=18)
Thanks!
##### 2 comentariosMostrar NingunoOcultar Ninguno
Renato Agurto el 15 de Abr. de 2015
Do you want to find the index for every time it crosses 18:
for example if
A = [10 20 30 40 50 60 50 40 30 21 10]
the answer would still be 2 and 10... or just 2?
shobhit mehrotra el 16 de Abr. de 2015
Yes every time it crosses 18 so the answer would be 2 & 10

Iniciar sesión para comentar.

Titus Edelhofer el 15 de Abr. de 2015
Hi,
you are looking for sign changes of A-18:
find((A(2:end)-18).*(A(1:end-1)-18) < 0)
Hope this helps,
Titus
##### 1 comentarioMostrar -1 comentarios más antiguosOcultar -1 comentarios más antiguos
Renato Agurto el 16 de Abr. de 2015
I just want to complement the answer, so the right index is shown if is nearer as the left:
tmp = find((A(2:end)-18).*(A(1:end-1)-18) < 0)
B = tmp + (abs(A(tmp) - 18) > abs(A(tmp+1)-18))

Iniciar sesión para comentar.

### Más respuestas (1)

Adam el 15 de Abr. de 2015
find( A == 18 + min( abs( A - 18 ) ) )
is a one-liner to do what you want. Personally I would probably do it as multiple lines, but the idea is the same.
##### 1 comentarioMostrar -1 comentarios más antiguosOcultar -1 comentarios más antiguos
Titus Edelhofer el 15 de Abr. de 2015
That's better than mine, because my code always selects the point to the left, Adam's picks the one that's nearer ...

Iniciar sesión para comentar.

### Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

### Community Treasure Hunt

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

Start Hunting!

Translated by