How to count the numbers before consecutive negative values?

1 visualizzazione (ultimi 30 giorni)
Hi, I have a code, whose output is:
c =
0.4855 -0.1902 -0.1758 0.3935 -0.1264 -0.1274 -0.0914 -0.1149 -0.0930 0.5572 0.5098 1.0000
0.9737 0.9508 0.9046 0.9083 0.8997
Now, I want to calculate the maximum number of consecutive negative numbers (in this case, it is, 5) and the number of values before it (in this case, it is 4). How do I do it?

Risposta accettata

Image Analyst
Image Analyst il 31 Lug 2021
Try this:
mask = bwareafilt(c < 0, 1);
props = regionprops(mask, 'Area', 'PixelIdxList')
longestRun = props.Area % Will be 5
numbersBefore = props.PixelIdxList(1) - 1 % will be 4

Più risposte (1)

Walter Roberson
Walter Roberson il 31 Lug 2021
c = [
0.4855 -0.1902 -0.1758 0.3935 -0.1264 -0.1274 -0.0914 -0.1149 -0.0930 0.5572 0.5098 1.0000 ...
0.9737 0.9508 0.9046 0.9083 0.8997]
c = 1×17
0.4855 -0.1902 -0.1758 0.3935 -0.1264 -0.1274 -0.0914 -0.1149 -0.0930 0.5572 0.5098 1.0000 0.9737 0.9508 0.9046 0.9083 0.8997
mask = c < 0
mask = 1×17 logical array
0 1 1 0 1 1 1 1 1 0 0 0 0 0 0 0 0
starts = strfind([0 mask], [0 1 1])
starts = 1×2
2 5
stops = strfind([mask 0], [1 1 0]) + 1
stops = 1×2
3 9
runlengths = stops - starts + 1
runlengths = 1×2
2 5
[maxrunlength, idx] = max(runlengths)
maxrunlength = 5
idx = 2
num_items_before_run = starts(idx) - 1
num_items_before_run = 4

Tag

Prodotti


Release

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by