How to sum up multiple matrices, element by element

28 Ansichten (letzte 30 Tage)
Kuba
Kuba am 10 Nov. 2017
Kommentiert: Jan am 15 Mär. 2022
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 Kommentar
Stephen23
Stephen23 am 10 Nov. 2017
Bearbeitet: Stephen23 am 10 Nov. 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!

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Jan
Jan am 11 Nov. 2017
Bearbeitet: Jan am 11 Nov. 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 Kommentare
Stephanie Watermann
Stephanie Watermann am 15 Mär. 2022
Thank you so much!
Jan
Jan am 15 Mär. 2022
You are welcome.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Birdman
Birdman am 10 Nov. 2017
Bearbeitet: Birdman am 10 Nov. 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 Kommentare
Kuba
Kuba am 10 Nov. 2017
Thanks a lot, it works perfectly!!
Jan
Jan am 11 Nov. 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);

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Resizing and Reshaping Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by