speed up 'for' loops
Afficher commentaires plus anciens
Hi,
How can I speed up following 'for' loops? Help me please.
P=200;
N=40000000;
y(1:P)=3;
% a: P X 1 matrix (vector)
% Z: P X 1 matrix (vector)
% x: N X 1 matrix (vector)
%%%%%Loops
y(P+1:N)=0;
for i=P+1:N
for j=1:P
y(i)=y(i)-a(j)*x(i-j);
end
end
for i=1:N
for j=1:P
f(i,j)=Z(j)^(i-1);
end
end
Thanks in advance.
Réponse acceptée
Plus de réponses (1)
Azzi Abdelmalek
le 7 Sep 2012
for the second loop
c=repmat(Z',N,1)
f=bsxfun(@power,c,[0:N-1]')
4 commentaires
Jan
le 7 Sep 2012
The power operation is surprisingly expensive. See "type vander".
Azzi Abdelmalek
le 7 Sep 2012
you are right, your code is faster for N=400000
Elapsed time is 0.489050 seconds.
Elapsed time is 0.757052 seconds. my code
Coo Boo
le 7 Sep 2012
Matt Fig
le 7 Sep 2012
No need for REPMAT or [].
f = bsxfun(@power,Z.',(0:N-1).');
Catégories
En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!