Filter löschen
Filter löschen

Info

Diese Frage ist geschlossen. Öffnen Sie sie erneut, um sie zu bearbeiten oder zu beantworten.

How do I make this loop faster?

1 Ansicht (letzte 30 Tage)
jakobjakob
jakobjakob am 9 Jun. 2018
Geschlossen: Jan am 9 Jun. 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 Kommentare
dpb
dpb am 9 Jun. 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 am 9 Jun. 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.

Antworten (0)

Diese Frage ist geschlossen.

Community Treasure Hunt

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

Start Hunting!

Translated by