- Preallocate f -- f=zeros(n,numel(w));
- Reorient w outside the loop
Reduce the computional time to calculate the mutilplying two matrixes
1 view (last 30 days)
Show older comments
I calculate this loop for thousands of time.
How can i optimize it to reduce the computational time?
for i=1:n
f(i,:)=w'*Q0(:,:,i)
end
with w =(2000,1) matrix and Q0=(2000,2000,100)
Thanks a lot.
2 Comments
dpb
on 17 May 2019
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.
Answers (1)
David Goodmanson
on 17 May 2019
Edited: David Goodmanson
on 17 May 2019
Hi Thu,
try
% 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.
See Also
Categories
Find more on Robust Control Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!