How to sum up multiple matrices, element by element
    27 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
So I've got multiple 100x100 matrices saved as a multidimensional Array a. Now I want to sum them up, element by element so the result is one 100x100 matrix. Since I got n matrices, I want to have a loop or similar, so I don't have to call every matrix by name like A1 + A2 + A3 + A4 ... = A. Example:
A =
       1     1     1
       2     2     2
       3     3     3
B =
       4     4     4
       5     5     5
       6     6     6
C =
       7     7     7
       8     8     8
       9     9     9
D = [Some magical loop]
D =
      12    12    12
      15    15    15
      18    18    18
1 comentario
  Stephen23
      
      
 el 10 de Nov. de 2017
				
      Editada: Stephen23
      
      
 el 10 de Nov. de 2017
  
			Your question contradicts itself: do you either have "as a multidimensional Array a" or do you have lots of separate matrices named "A1 + A2 + A3 + A4 ... " ?
If you have one ND array then you do not need lots of separate arrays. If you have lots of separate arrays then you really need one ND array!
Respuesta aceptada
  Jan
      
      
 el 11 de Nov. de 2017
        
      Editada: Jan
      
      
 el 11 de Nov. de 2017
  
      If you really have a list of variables A1, A2, A3: This is a bad idea and impedes using the data. Prefer a multi-dimensional array A(m, n, k). Then the sum is trivial:
A = cat(3, ...
   [1     1     1; ...
    2     2     2; ...
    3     3     3], ...
   [4     4     4; ...
    5     5     5; ...
    6     6     6], ...
   [7     7     7; ...
    8     8     8; ...
    9     9     9]);
D = sum(A, 3);
8 comentarios
Más respuestas (1)
  Birdman
      
      
 el 10 de Nov. de 2017
        
      Editada: Birdman
      
      
 el 10 de Nov. de 2017
  
      A(:,:,1)=randi([1 3],100,100);
A(:,:,2)=randi([1 3],100,100);
A(:,:,3)=randi([1 3],100,100);
A(:,:,4)=randi([1 3],100,100);
B=zeros(size(A,1),size(A,2));
for i=1:size(A,3)
    B=B+A(1:size(A,1),1:size(A,2),i);
end
disp(B)
2 comentarios
  Jan
      
      
 el 11 de Nov. de 2017
				Note that
    B = B + A(1:size(A,1),1:size(A,2),i);
can be processed much more efficient when written as:
    B = B + A(:, :, i);
But the complete code can be simplified to:
A = randi([1 3], 100, 100, 4);
B = sum(A, 3);
Ver también
Categorías
				Más información sobre Resizing and Reshaping Matrices 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!






