## Make this matrix multiplication more efficient

### Ignacio Echeveste (view profile)

on 23 Nov 2015
Latest activity Commented on by Ignacio Echeveste

on 26 Nov 2015

### James Tursa (view profile)

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

### James Tursa (view profile)

on 25 Nov 2015

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 Comment

Ignacio Echeveste

### Ignacio Echeveste (view profile)

on 26 Nov 2015
Yes, the dimensions were wrong. Thank you, it is much more efficient.

### Richa Gupta (view profile)

on 25 Nov 2015

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.