How to count the numbers before consecutive negative values?

1 visualización (últimos 30 días)
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?

Respuesta aceptada

Image Analyst
Image Analyst el 31 de Jul. de 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

Más respuestas (1)

Walter Roberson
Walter Roberson el 31 de Jul. de 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

Etiquetas

Productos


Versión

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by