How to count the numbers before consecutive negative values?
1 次查看(过去 30 天)
显示 更早的评论
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?
采纳的回答
Image Analyst
2021-7-31
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
0 个评论
更多回答(1 个)
Walter Roberson
2021-7-31
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]
mask = c < 0
starts = strfind([0 mask], [0 1 1])
stops = strfind([mask 0], [1 1 0]) + 1
runlengths = stops - starts + 1
[maxrunlength, idx] = max(runlengths)
num_items_before_run = starts(idx) - 1
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!