how to add 3 matrices with one dimension same for all and other dimension different?
Mostra commenti meno recenti
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 Commenti
John Chilleri
il 24 Gen 2017
Do you need this generalized to any size matrix, or will it strictly be with three matrices of these exact sizes?
summyia qamar
il 24 Gen 2017
Risposta accettata
Più risposte (1)
John Chilleri
il 24 Gen 2017
Modificato: John Chilleri
il 24 Gen 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 Commenti
John Chilleri
il 24 Gen 2017
Modificato: John Chilleri
il 24 Gen 2017
You would need to save it as a function then call,
D = strangelyAddingMatrices(A,B,C);
from the command window.
summyia qamar
il 24 Gen 2017
John Chilleri
il 24 Gen 2017
Alternatively, you can copy and paste the body of the function to the command window:
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
or you could use Neils solution below which also works!
summyia qamar
il 24 Gen 2017
John Chilleri
il 24 Gen 2017
That's strange, I ran it on randomly generated matrices of the same size as yours and it worked, although it slowed my computer way down as it requires so much memory (as was mentioned below).
summyia qamar
il 24 Gen 2017
John Chilleri
il 24 Gen 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
il 24 Gen 2017
John Chilleri
il 24 Gen 2017
What do you mean by minimum sum? Like which columns summed produce the minimum? Or something else?
Categorie
Scopri di più su Creating and Concatenating Matrices in Centro assistenza e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!