Fast matrix multiplication in loop
7 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Dear All,
I have two matrices with dimensions 3x3 and E6x3. I need to multiply each row of the latter with the former. It's like
a=rand(3,3);
b=(1000000,3);
for i=1:size(b,1)
c=a*b(i,:)';
end
However, this step takes hours to be done. I wonder if there is any faster way to do this.
Cheers.
1 commentaire
Réponse acceptée
Azzi Abdelmalek
le 7 Fév 2014
Modifié(e) : Azzi Abdelmalek
le 7 Fév 2014
a=rand(3,3);
b=rand(100,3);
n=size(a,2);
m=size(b,1);
c=zeros(m,n);
for i=1:size(b,1)
c(i,:)=a*b(i,:)';
end
%or simply
c=(a*b')'
0 commentaires
Plus de réponses (2)
Jos (10584)
le 7 Fév 2014
Two options:
1. pre-allocate C to avoid memory allocation in each iteration
C = zeros(N, ..) % pre-allocation
for k = 1:N,
C(k,:) = ..
end
2. Use BSXFUN
Voir également
Catégories
En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!