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

3 ビュー (過去 30 日間)
summyia qamar
summyia qamar 2017 年 1 月 24 日
コメント済み: Niels 2017 年 1 月 24 日
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 件のコメント
summyia qamar
summyia qamar 2017 年 1 月 24 日
to any kind..although my specific problem is
A=64x1
B=64x1806
C=64x4602
so I need a generalized version

サインインしてコメントする。

採用された回答

Niels
Niels 2017 年 1 月 24 日
編集済み: Niels 2017 年 1 月 24 日
[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 件のコメント
Niels
Niels 2017 年 1 月 24 日
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.

サインインしてコメントする。

その他の回答 (1 件)

John Chilleri
John Chilleri 2017 年 1 月 24 日
編集済み: John Chilleri 2017 年 1 月 24 日
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 件のコメント
John Chilleri
John Chilleri 2017 年 1 月 24 日
What do you mean by minimum sum? Like which columns summed produce the minimum? Or something else?

サインインしてコメントする。

Community Treasure Hunt

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

Start Hunting!

Translated by