Can this be accelerated?
2 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Azzi Abdelmalek
2015-7-25
4 个评论
James Tursa
2015-7-26
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.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Performance and Memory 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!