MATLAB Answers


Reduce the computional time to calculate the mutilplying two matrixes

Asked by Thu Nguyen on 17 May 2019
Latest activity Commented on by Thu Nguyen on 17 May 2019
I calculate this loop for thousands of time.
How can i optimize it to reduce the computational time?
for i=1:n
with w =(2000,1) matrix and Q0=(2000,2000,100)
Thanks a lot.


  1. Preallocate f -- f=zeros(n,numel(w));
  2. Reorient w outside the loop
The first may help enough to be noticeable if haven't; the second is very minor aid to the optimizer and likely will make little, if any, difference.
Thank you a lot. I also made preallocate and reorient as you made and only reduce little time. I need reduce more such as ~ 100 times.

Sign in to comment.

1 Answer

Answer by David Goodmanson on 17 May 2019
Edited by David Goodmanson on 17 May 2019

Hi Thu,
% N = 1000;
% M = 200;
Q00 = reshape(Q0,N,N*M);
ff = reshape(w'*Q00,N,M)';
This is approximately four times faster on my PC, compared to the first way with f preallocated.

  1 Comment

Thank you so much. I found this solution very interesting. But on my PC, it reduce time a little. I want to reduce the computational time about 100 times. Any solution?

Sign in to comment.