Info

Cette question est clôturée. Rouvrir pour modifier ou répondre.

How do I make this loop faster?

1 vue (au cours des 30 derniers jours)
jakobjakob
jakobjakob le 9 Juin 2018
Clôturé : Jan le 9 Juin 2018
for j= 1:240
k=index_aanname(j);
for l=1:length(alldata);
while ((strcmp(alldata(l,3), SA{j})) && ...
((TA(1,j) - alldata{l,1}) <= 10.0) && ...
(strcmp(alldata(l,4), 'Voor'))) == 1
B(l) = (tijdnum(l));
end
end
end
How do I make this loop faster? It is during way too long...
  2 commentaires
dpb
dpb le 9 Juin 2018
More than likely don't need to loop over l at all but as written B will contain results for those values of l that are anywhere in the combination of the SA/TA arrays. Is this the intended result?
Also, as written the test for TA is signed; is that also intended to be one-sided?
Without rest of data arrays nobody here can test/play around with the problem.
As for speed, was B preallocated? As is, will "grow" dynamically which is a speed bottleneck of first order.
Jan
Jan le 9 Juin 2018
Please post all input data such that we can run the code. Currently the posted code is meaningless, because the while loop does not stop: The condition is not modified by the body of the loop.
It is not useful to ask for the acceleration of a not running code. Please edit the question and fix it.

Réponses (0)

Cette question est clôturée.

Community Treasure Hunt

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

Start Hunting!

Translated by