How to sum up row values in a matrix?
    9 views (last 30 days)
  
       Show older comments
    
    Sayanta
      
 on 14 Sep 2012
  
    
    
    
    
    Answered: Renda Mohammedjuhar
 on 30 Apr 2019
            Dear All
I have matrix A
A = [ 1 2 3 5;    
    3 4 5 4;     
   ];
I want to add row values like that using a loop ( without manual input)
A(1,1) + A(1,2) = B1 
A(1,3) + A(1,4) = B2
A(2,1) + A(2,2) = B3
A(2,3) + A(2,4) = B4
B= [ B1 B2;    
     B3 B4    
   ];
How can I do that any tips
Many Thanks in advance
6 Comments
  Image Analyst
      
      
 on 2 Jan 2017
				I'm not sure of your rule, but it looks like you might be doing
Values = cumsum(M(:, end))
Accepted Answer
  Renda Mohammedjuhar
 on 30 Apr 2019
        I have a matrix like [1 2 3 4] I want an output [1 3 6 10]
0 Comments
More Answers (4)
  Azzi Abdelmalek
      
      
 on 14 Sep 2012
        
      Edited: Azzi Abdelmalek
      
      
 on 14 Sep 2012
  
      A = [ 1 2 3 5;3 4 5 4]
res=reshape(sum(reshape(A',1,2,[])),2,2)'
%or
res=A(:,[1 3])+A(:,[2 4])
%or
n=size(A,2)/2
res=[sum(A(1,1:n)) sum(A(1,n+1:end)); sum(A(2,1:n)) sum(A(2,n+1:end))]
0 Comments
  Image Analyst
      
      
 on 14 Sep 2012
        
      Edited: Image Analyst
      
      
 on 14 Sep 2012
  
      Here's one way:
A = [ 1 2 3 5;
    3 4 5 4]
% Get the sliding sum.
a2 = conv2(A, [1 1], 'valid');
% Extract just the first and last column.
output = [a2(:,1) a2(:,3)]
0 Comments
  Sayanta
      
 on 14 Sep 2012
        4 Comments
  Azzi Abdelmalek
      
      
 on 14 Sep 2012
				or simpler
n=size(A,2)/2
res=[sum(A(1,1:n)) sum(A(1,n+1:end)); sum(A(2,1:n)) sum(A(2,n+1:end))]
  Image Analyst
      
      
 on 14 Sep 2012
				Yeah, that's probably better - more direct - as long as he has a 2 row array. In his example here (which he incorrectly posted as an answer), he has a 7 row by 8 column array. See my build on your solution for when it has any number of rows.
  Image Analyst
      
      
 on 14 Sep 2012
        
      Edited: Image Analyst
      
      
 on 14 Sep 2012
  
      A=[...
    0.0018    0.0008    0.0000    0.0000    0.2304    0.7345    0.0159    0.0166
    0.0024    0.0016    0.0001    0.0000    0.2161    0.7441    0.0165    0.0192
    0.0029    0.0027    0.0002    0.0000    0.2084    0.7475    0.0169    0.0214
    0.0034    0.0040    0.0003    0.0000    0.2041    0.7479    0.0172    0.0230
    0.0038    0.0055    0.0005    0.0001    0.2016    0.7468    0.0175    0.0243
    0.0041    0.0072    0.0007    0.0001    0.1999    0.7450    0.0177    0.0253
    0.0044    0.0090    0.0009    0.0001    0.1988    0.7429    0.0178    0.0261]
[rows columns] = size(A)
% Get the sliding sum
a2 = conv2(A, ones(1, columns/2), 'valid')
% Extract just the first and last column.
B = [a2(:,1) a2(:,end)]
Or, building off Azzi's solution and making it work for a 2D array of any number of rows:
B = [sum(A(:,1:columns/2), 2) sum(A(:,(columns/2)+1:end), 2)]
This is probably the most direct way. And it's only 1 line of code instead of 2.
0 Comments
See Also
Categories
				Find more on Loops and Conditional Statements 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!



