using the find function to find intersection of two lines
3 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
Renato Agurto
2015 年 4 月 15 日
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?
採用された回答
Titus Edelhofer
2015 年 4 月 15 日
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 件のコメント
Renato Agurto
2015 年 4 月 16 日
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))
その他の回答 (1 件)
Adam
2015 年 4 月 15 日
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 件のコメント
Titus Edelhofer
2015 年 4 月 15 日
That's better than mine, because my code always selects the point to the left, Adam's picks the one that's nearer ...
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!