How to sum up row values in a matrix?
    9 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Sayanta
      
 el 14 de Sept. de 2012
  
    
    
    
    
    Respondida: Renda Mohammedjuhar
 el 30 de Abr. de 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 comentarios
  Image Analyst
      
      
 el 2 de En. de 2017
				I'm not sure of your rule, but it looks like you might be doing
Values = cumsum(M(:, end))
Respuesta aceptada
  Renda Mohammedjuhar
 el 30 de Abr. de 2019
        I have a matrix like [1 2 3 4] I want an output [1 3 6 10]
0 comentarios
Más respuestas (4)
  Azzi Abdelmalek
      
      
 el 14 de Sept. de 2012
        
      Editada: Azzi Abdelmalek
      
      
 el 14 de Sept. de 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 comentarios
  Image Analyst
      
      
 el 14 de Sept. de 2012
        
      Editada: Image Analyst
      
      
 el 14 de Sept. de 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 comentarios
  Sayanta
      
 el 14 de Sept. de 2012
        4 comentarios
  Azzi Abdelmalek
      
      
 el 14 de Sept. de 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
      
      
 el 14 de Sept. de 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
      
      
 el 14 de Sept. de 2012
        
      Editada: Image Analyst
      
      
 el 14 de Sept. de 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 comentarios
Ver también
Categorías
				Más información sobre Loops and Conditional Statements en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




