# how to sum the elements of the same row in a cell array?

1 vue (au cours des 30 derniers jours)
chocho le 13 Déc 2018
Commenté : Image Analyst le 13 Déc 2018
Hello guys,
I ave a cell array of 1450 rows and 2 columns(1450*2)
Some rows in column 1 are repeated but with different contents in column2
How can i get these repeated rows in sigle row with the sum of their contents ?
I appreciate any helps:
Inputs: wanted_outputs:
I ##### 2 commentairesAfficher 1 commentaire plus ancienMasquer 1 commentaire plus ancien
chocho le 13 Déc 2018
I applied unique

Connectez-vous pour commenter.

### Réponse acceptée

Stephen23 le 13 Déc 2018
Modifié(e) : Stephen23 le 13 Déc 2018
>> C = {'A','hello';'B','live';'C','cat';'A','world';'B','fast'}
C =
'A' 'hello'
'B' 'live'
'C' 'cat'
'A' 'world'
'B' 'fast'
>> [U,~,X] = unique(C(:,1));
>> F = @(n) C(n==X,2).';
>> V = arrayfun(F,1:max(X),'uni',0);
>> Z = [U,V(:)]
Z =
'A' {'hello','world'}
'B' {'live','fast'}
'C' {'cat'}
##### 3 commentairesAfficher 2 commentaires plus anciensMasquer 2 commentaires plus anciens
Stephen23 le 13 Déc 2018
Modifié(e) : Stephen23 le 13 Déc 2018
@chocho: You can easily concatenate those character vectors together, if that is what you want to do, just change the anonymous function:
>> F = @(n) [C{n==X,2}];
>> V = arrayfun(F,1:max(X),'uni',0);
>> Z = [U,V(:)]
Z =
'A' 'helloworld'
'B' 'livefast'
'C' 'cat'
Or perhaps you want to join them with commas, this is also easy:
>> F = @(n) sprintf('%s, ',C{n==X,2});
>> V = arrayfun(F,1:max(X),'uni',0);
>> Z = [U,strtrim(V(:))]
Z =
'A' 'hello, world,'
'B' 'live, fast,'
'C' 'cat,'

Connectez-vous pour commenter.

### Plus de réponses (1)

KSSV le 13 Déc 2018
Modifié(e) : KSSV le 13 Déc 2018
C = cell(5,2) ;
C{1,1} = 'apple' ; C{1,2} = 'red' ;
C{2,1} = 'apple' ; C{2,2} = 'round' ;
C{3,1} = 'grapes' ; C{3,2} = 'green' ;
C{4,1} = 'strawberry' ; C{4,2} = 'sweet' ;
C{5,1} = 'grapes' ; C{5,2} = 'small' ;
%
[c,ia,ib] = unique([C(:,1)]) ;
iwant = cell(length(c),2) ;
for i = 1:length(c)
iwant{i,1} = c{i} ;
iwant{i,2} = strjoin(C(ib==i,2)) ;
end
##### 4 commentairesAfficher 3 commentaires plus anciensMasquer 3 commentaires plus anciens
Image Analyst le 13 Déc 2018
I see that he asked for your data (which you could attach in a .mat file with the paper clip icon) and you chose not to. If you make it easy for people to help you, not hard, then you'd get an answer sooner - you'd probably have had the solution by now.

Connectez-vous pour commenter.

### Catégories

En savoir plus sur Matrices and Arrays 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!