Hello,
I would like to do the following matrix multiplication much efficiently:
m=1000;n=500;
a=zeros(n,1);
b=rand(n,1);
A=rand(m,n);
B=rand(m,m);
for i=1:n
a(i)=b'*(A'*B(i,:)'*B(i,:)*A)*b;
end
Thanks in advance

 채택된 답변

James Tursa
James Tursa 2015년 11월 25일

0 개 추천

a = (B(1:n,:)*(A*b)).^2;
You dimensions for B look a little strange to me, since your calculations do not use all of the rows of B (hence the B(1:n,:) reduction above).

댓글 수: 1

Yes, the dimensions were wrong. Thank you, it is much more efficient.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Richa Gupta
Richa Gupta 2015년 11월 25일

0 개 추천

Hi Ignacio,
The code below reduces the time from 2.6 secs to 0.06 secs on my machine:
m = 1000; n = 500;
a = zeros(n,1);
b = rand(n,1);
A = rand(m,n);
B = rand(m,m);
for i=1:n
temp =(B(i,:)*A)*b;
a(i) = temp'*temp;
end
Hope this helps.

카테고리

도움말 센터File Exchange에서 Mathematics에 대해 자세히 알아보기

질문:

2015년 11월 23일

댓글:

2015년 11월 26일

Community Treasure Hunt

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

Start Hunting!

Translated by