MATLAB Answers

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

3 views (last 30 days)
summyia qamar
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)]
  2 Comments
summyia qamar
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

Sign in to comment.

Accepted Answer

Niels
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
  11 Comments
Niels
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.

Sign in to comment.

More Answers (1)

John Chilleri
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:
%
% Strangely adding matrices
%
function D = strangelyAddingMatrices(A,B,C)
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!
  9 Comments
John Chilleri
John Chilleri on 24 Jan 2017
What do you mean by minimum sum? Like which columns summed produce the minimum? Or something else?

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!