Can this be accelerated?

조회 수: 2 (최근 30일)
Patrick Mboma
Patrick Mboma 2015년 7월 25일
댓글: James Tursa 2015년 7월 26일
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

채택된 답변

Azzi Abdelmalek
Azzi Abdelmalek 2015년 7월 25일
  댓글 수: 4
Patrick Mboma
Patrick Mboma 2015년 7월 25일
Looks like I may have overlooked something... Thanks for pointing that out.
James Tursa
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 CenterFile Exchange에서 Performance and Memory에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by