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
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?
shobhit mehrotra
shobhit mehrotra 2015 年 4 月 16 日
Yes every time it crosses 18 so the answer would be 2 & 10

サインインしてコメントする。

 採用された回答

Titus Edelhofer
Titus Edelhofer 2015 年 4 月 15 日

0 投票

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
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
Adam 2015 年 4 月 15 日

1 投票

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
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 ...

サインインしてコメントする。

カテゴリ

ヘルプ センター および File Exchange で Matrix Indexing についてさらに検索

製品

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by