How to pick group sum values from an array
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Poorna Durga Geesupalli
le 28 Nov 2022
Commenté : William Rose
le 2 Déc 2022
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.
Answer like X1=sum(5+1+1+3+5)=15;
But I need X2=groupsum[5 3 5];
How can I do this.
Thanks,
1 commentaire
Stephen23
le 2 Déc 2022
X = '1111100000000010000000100011100011111';
[S,E] = regexp(X,'1{3,}');
N = E-S+1
Réponse acceptée
William Rose
le 28 Nov 2022
Modifié(e) : William Rose
le 28 Nov 2022
[edit: correct a typo in one of the comment lines in the code, fix indenting, add comments]
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)
Try it. Good luck.
Plus de réponses (2)
chrisw23
le 28 Nov 2022
Modifié(e) : chrisw23
le 28 Nov 2022
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 commentaires
Vilém Frynta
le 28 Nov 2022
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)
a = strsplit(xTxt,"0")
0 commentaires
Voir également
Catégories
En savoir plus sur Characters and Strings dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!