Can this be accelerated?
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Patrick Mboma
el 25 de Jul. de 2015
Comentada: James Tursa
el 26 de Jul. de 2015
Hi,
The following computations are very expensive for large matrices A, B and the coefficient q.
C=reshape(A,a1*q,b1)*B;
C=reshape(C,a1,b2*q);
a1 and a2 are the dimensions of A, while b1 and b2 are the dimensions of B and with the restriction that a2=b1*q.
In my applications, matrices A and B can have dimensions in the orders of thousands or more.
There is one way of implementing these operations using loops
C=zeros(a1,b2*q);
acols=0:q:(b1-1)*q;
ccols=0:q:(b2-1)*q;
for ii=q:-1:1
C(:,ccols+ii)=A(:,acols+ii)*B;
end
but that strategy is not as fast as the one above. Is there any way to accelerate these operations?
try them for instance with the following
b1=1300;
b2=500;
q=350;
a1=300;
a2=b1*q;
B=rand(b1,b2);
A=rand(a1,a2);
Thanks
0 comentarios
Respuesta aceptada
Azzi Abdelmalek
el 25 de Jul. de 2015
4 comentarios
James Tursa
el 26 de Jul. de 2015
Are any of the matrices sparse? For full matrices, reshape is extremely fast since it returns a shared data copy. But for sparse matrices, reshape is expensive since it requires a deep data copy.
Más respuestas (0)
Ver también
Categorías
Más información sobre Performance and Memory en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!