How to calculate the number of consecutive negative values in an array before a positive appears?

3 ビュー (過去 30 日間)
I am writing a code, where the output is as follows:
c =
-0.4607 -0.4659 -0.5165 -0.5168 -0.5164 -0.4626 -0.4668 -0.3730 -0.3426 0.3224
0.3251 0.3270 0.3281 0.3400 -0.1816 -0.1830 -0.1851 1
I want to calculate the number of negative values before a positive value appeares for each cases. How do I do that?

採用された回答

Image Analyst
Image Analyst 2021 年 7 月 29 日
Here's another way:
c =[-0.4607 -0.4659 -0.5165 -0.5168 -0.5164 -0.4626 -0.4668 -0.3730 -0.3426 0.3224 ...
0.3251 0.3270 0.3281 0.3400 -0.1816 -0.1830 -0.1851 1]
props = regionprops(c<0, 'Area'); % Measure lengths of all runs of negative values.
results = [props.Area] % [9, 3] % Turn from structure into a vector.
  3 件のコメント
Tawsif Mostafiz
Tawsif Mostafiz 2021 年 7 月 30 日
Thanks everyone! I have another problem. Suppose the output is like this:
results =
1 14 3 14
Now suppose I want to find the count of numbers (both positive and negative) before the maximum count of negative numbers appears. As the maximum 14 comes twice and I need the first instance, I am calculcating the maximum by this:
maximum=max(results);
location=find(results==maximum,1);
Now, how do I calculate, how many numbers appear before it?
Image Analyst
Image Analyst 2021 年 7 月 30 日
That number is simply the location minus 1. So it finds 14 at location 2 for the max, and there is one number, 1, before that location.

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

その他の回答 (1 件)

Adam Danz
Adam Danz 2021 年 7 月 29 日
c = [-0.4607 -0.4659 -0.5165 -0.5168 -0.5164 -0.4626 -0.4668 -0.3730 -0.3426 0.3224 ,...
0.3251 0.3270 0.3281 0.3400 -0.1816 -0.1830 -0.1851 1];
A = c(:)<0;
B = diff(find([0,A(:).',0]==0))-1;
B(B==0) = []
B = 1×2
9 3

カテゴリ

Help Center および File ExchangeImages についてさらに検索

タグ

製品


リリース

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by