# how to add 3 matrices with one dimension same for all and other dimension different?

2 views (last 30 days)
summyia qamar on 24 Jan 2017
Commented: Niels on 24 Jan 2017
If I have
A=[1;
2;
3]
B=[2 3 4;
5 6 7;
8 9 0]
C=[3 4 5 6;
9 8 7 6;
5 4 2 1]
all 3 matrices have 3 rows but columns different. I want to add elements of rows of all matrices in this way for example I want
D=[(1+2+3) (1+2+4) (1+2+5) (1+2+6) (1+3+3) (1+3+4) (1+3+5) (1+3+6) (1+4+3) (1+4+4) (1+4+5) (1+4+6);
(2+5+9) (2+5+8) (2+5+7) (2+5+6) (2+6+9) (2+6+8) (2+6+7) (2+6+6) (2+7+9) (2+7+8) (2+7+7) (2+7+6);
(3+8+5) (3+8+4) (3+8+2) (3+8+1) (3+9+5) (3+9+4) (3+9+2) (3+9+1) (3+0+5) (3+0+4) (3+0+2) (3+0+1)]

John Chilleri on 24 Jan 2017
Do you need this generalized to any size matrix, or will it strictly be with three matrices of these exact sizes?
summyia qamar on 24 Jan 2017
to any kind..although my specific problem is
A=64x1
B=64x1806
C=64x4602
so I need a generalized version

Niels on 24 Jan 2017
Edited: Niels on 24 Jan 2017
[rows,col_B]=size(B);
[~,col_C]=size(C);
result=zeros(rows,col_B*col_C);
for i=1:col_B
for j=1:col_C
result(:,(i-1)*col_C+j)=A+B(:,i)+C(:,j);
end
end

summyia qamar on 24 Jan 2017
I'm posting another question for trying to minimize the calculations in my code so that these numbers can be minimized
Niels on 24 Jan 2017
that error occurs even before you even start your calculations
Niels on 24 Jan 2017
the result will be that large, so even if the calculations are minimzed, the problem with the size of the result is still the same.

John Chilleri on 24 Jan 2017
Edited: John Chilleri on 24 Jan 2017
Hello,
I only tested this with your example and it worked, but I think it's generally correct:
%
%
n = size(C,2);
nB = size(B,2);
for i = 1:n
C(:,i) = C(:,i)+A;
end
D = [];
for i = 1:nB
C2 = C;
for j = 1:n
C2(:,j) = C2(:,j)+B(:,i);
end
D = [D C2];
end
end
Hope this helps!

John Chilleri on 24 Jan 2017
Other than running it on a better device or asking someone to run it for you, I can only think of computing it by block.
In other words, how will you use this resultant matrix? If you are only going to use a piece of it at a time, then you can compute the necessary subblock of that matrix as needed. Or you can intelligently generate a portion at a time as required for calculations, then overwrite that portion to have eventually used the whole matrix in the calculation.
summyia qamar on 24 Jan 2017
actually these A,B,C are resultants of different calculations and I want to get minimum sum of all A,B,C thats why I want to sum up them
John Chilleri on 24 Jan 2017
What do you mean by minimum sum? Like which columns summed produce the minimum? Or something else?