How can add the rows in n-by-m matrix that have the same indicator in the last column?
    3 views (last 30 days)
  
       Show older comments
    
    Abdulatif Alabdulatif
 on 6 Jun 2016
  
Hi,
How can add the rows in n-by-m matrix that have the same indicator in the last column?
For example: 10-by-3 matrix, the third column is the indecator:
253638  3309  2
223389  3309  2
255968  3309  2
243943  33309  2
245568  63309  1
242490  93309  3
268464  23309  2
272665  53309  1
241206  83309  1
259310  13309  2
I want to add all rows (all values in first column with the same indicator) with ( all values in second column with the same indicator).
0 Comments
Accepted Answer
  Jos (10584)
      
      
 on 6 Jun 2016
        X = [253638  3309  2
223389  3309  2
255968  3309  2
243943  33309  2
245568  63309  1
242490  93309  3
268464  23309  2
272665  53309  1
241206  83309  1
259310  13309  2]
OUT = cell2mat(arrayfun(@(k) [sum(X(X(:,3)==k,[1 2]),1) k], unique(X(:,3)),'un',0))
2 Comments
  Jos (10584)
      
      
 on 6 Jun 2016
				Juts modify the function used by arrayfun
OUT = cell2mat(arrayfun(@(k) [sum(X(X(:,3)==k,[1 2]),1) k sum(X(:,3)==k)], unique(X(:,3)),'un',0))
More Answers (2)
  Azzi Abdelmalek
      
      
 on 6 Jun 2016
        
      Edited: Azzi Abdelmalek
      
      
 on 6 Jun 2016
  
      You can use accumarray function
A=[253638  3309  3
223389  3309  2
255968  3309  2
243943  33309  2
245568  63309  1
242490  93309  3
268464  23309  2
272665  53309  1
241206  83309  1
259310  13309  2]
[ii,~,jj]=unique(A(:,3))
out=accumarray(jj,(1:numel(jj))',[],@(x) {sum(A(x,1:2),1)})
out=[ cell2mat(out) ii]
2 Comments
  Walter Roberson
      
      
 on 6 Jun 2016
        unique() to find the unique indicators and the number of indicators. Allocate an zero array of appropriate size to hold the results. Loop over the unique indicators finding the rows that match and totaling them and storing that in the results array.
accumarray() is not suitable for your purposes because accumarray cannot operator on row vectors of values.
See Also
Categories
				Find more on Performance and Memory in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


