Question about array alternating between positive and negative
8 ビュー (過去 30 日間)
古いコメントを表示
Hello,
I have solved a differential equation symbolically and then evaulated it based on user input. The result is different every time. Each time I obtain an array from the graph. For example, lets say I get an array, a=[-1,1,2,-2,1,5,-4,1]. Is there a way to find out how many times the sign of an array changes from positive to negative? The reason I am trying to do this is I need to know how many times the curve crosses the origin.
Thanks!
0 件のコメント
採用された回答
James Tursa
2019 年 5 月 15 日
編集済み: James Tursa
2019 年 5 月 15 日
Seems like there should be a shorter way, but assuming you are looking for all 0 crossings and not just the positive to negative ones:
sum(logical(diff(sign(a))))
This will double book the exact 0's, however. So if you expect you might get those, you will need something more sophisticated.
2 件のコメント
James Tursa
2019 年 5 月 15 日
E.g.,
>> a = [-2 -3 0 1 2 -3 5]
a =
-2 -3 0 1 2 -3 5
>> sum(logical(diff(sign(a))))
ans =
4
There's really only three 0 crossings, but the calculation above gave a result of 4. The 0 crossing from -3 --> 0 --> 1 got double booked because the sign changed twice even though it was only one crossing. So if you expect you might get exact 0's you will need a more sophisticated method to detect them and check for 0 crossings vs 0 peaks etc and adjust the answer accordingly.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Data Type Identification についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!