# How to pick group sum values from an array

4 次查看（过去 30 天）
Poorna Durga Geesupalli2022-11-28

How can I do the group sum in an array.
X=[1111100000000010000000100011100011111];
In this X array, I wanna group the values where index 1 occus for 3 or more consecutive cells.
But I need X2=groupsum[5 3 5];
How can I do this.
Thanks,
##### 1 个评论显示隐藏 无
Stephen23 2022-12-2
X = '1111100000000010000000100011100011111';
[S,E] = regexp(X,'1{3,}');
N = E-S+1
N = 1×3
5 3 5

### 采纳的回答

William Rose 2022-11-28

Xs='1111100000000010000000100011100011111';
%% Convert string of digits to array of numbers
X=zeros(1,length(Xs));
for i=1:length(X),X(i)=str2num(Xs(i)); end
%% Process the array, looking for groups of 3 or more consecutive 1's
i=3; % i=current position in vector X
k=1; % k=current position in vector X2
X2=[];
while i<=length(X)
j=i-2;
c=1; %c=1 indicates we should check X1
while c && i<=length(X)
X1=sum(X(j:i));
if X1<(i-j+1)
c=0; %There is at least one "0" in the group, so move one
end
i=i+1;
end
if X1>=3
X2=[X2,X1]; %append X1 to X2
k=k+1;
end
end
%% Display result
fprintf('X2 =');disp(X2)
X2 = 5 3 5
Try it. Good luck.
##### 4 个评论显示隐藏 3更早的评论
William Rose 2022-12-2
THank you @Stephen23. Those are nice to know about.

### 更多回答（2 个）

chrisw23 2022-11-28

X=[1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 1 1 1 1 1];
xStr = string(X).join("");
pat = asManyOfPattern("1",3); % group of at least 3 times "1"
matchVec = xStr.extract(pat);
count = matchVec.join.strlength;
...a step by step example using string functions for this special case
##### 0 个评论显示隐藏 -1更早的评论

Vilém Frynta 2022-11-28
I tried this: (converting into text, deleting zeros, then finding strings of ones and checking their length)
but I have to go. I might come back later to finish this, but you get the idea. Hope I helped.
x = [1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,0,1,1,1,1,1];
xTxt = num2str(x)
xTxt = '1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 1 1 1 1 1'
a = strsplit(xTxt,"0")
a = 1×23 cell array
{'1 1 1 1 1 '} {' '} {' '} {' '} {' '} {' '} {' '} {' '} {' '} {' 1 '} {' '} {' '} {' '} {' '} {' '} {' '} {' 1 '} {' '} {' '} {' 1 1 1 '} {' '} {' '} {' 1 1 1 1 1'}

### 类别

Find more on Matrix Indexing in Help Center and File Exchange

R2020b

### Community Treasure Hunt

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

Start Hunting!

Translated by