Effacer les filtres
Effacer les filtres

using the find function to find intersection of two lines

1 vue (au cours des 30 derniers jours)
shobhit mehrotra
shobhit mehrotra le 15 Avr 2015
Commenté : Renato Agurto le 16 Avr 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 commentaires
Renato Agurto
Renato Agurto le 15 Avr 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
shobhit mehrotra le 16 Avr 2015
Yes every time it crosses 18 so the answer would be 2 & 10

Connectez-vous pour commenter.

Réponse acceptée

Titus Edelhofer
Titus Edelhofer le 15 Avr 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 commentaire
Renato Agurto
Renato Agurto le 16 Avr 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))

Connectez-vous pour commenter.

Plus de réponses (1)

Adam
Adam le 15 Avr 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 commentaire
Titus Edelhofer
Titus Edelhofer le 15 Avr 2015
That's better than mine, because my code always selects the point to the left, Adam's picks the one that's nearer ...

Connectez-vous pour commenter.

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Tags

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by