using the find function to find intersection of two lines
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
shobhit mehrotra
am 15 Apr. 2015
Kommentiert: Renato Agurto
am 16 Apr. 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 Kommentare
Renato Agurto
am 15 Apr. 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?
Akzeptierte Antwort
Titus Edelhofer
am 15 Apr. 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 Kommentar
Renato Agurto
am 16 Apr. 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))
Weitere Antworten (1)
Adam
am 15 Apr. 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 Kommentar
Titus Edelhofer
am 15 Apr. 2015
That's better than mine, because my code always selects the point to the left, Adam's picks the one that's nearer ...
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!