How to simplify a code to remove a for loop and make it faster?
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hello,
I'm still learning vectorization and haven't figured out how to simplify this code:
B=zeros(1,a^2);
for j=1:a^2;
B(:)=B(:)+C(:,j)*D(j);
end;
in which B is a vector of 1 row by a^2 columns, C is an a x a matrix, and D is a vector of 1 row by a^2 columns
So basically what is happening is I take all the columns of C (one by one) and multiply them by D and then add them to B but this is repeated column by column on C.
I appreciate if anyone can show me how to do this.
Thank you very much.
0 Kommentare
Antworten (3)
Iain
am 14 Aug. 2014
One of these ought to do it:
B = C' * D;
or
B = C' * D';
You might need to transpose B to get what you want....
0 Kommentare
Azzi Abdelmalek
am 14 Aug. 2014
Bearbeitet: Azzi Abdelmalek
am 14 Aug. 2014
Edit
a=4
C=rand(a^2);
D=rand(1,a^2);
B=sum(bsxfun(@times, C,D),2)
2 Kommentare
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!