VERY slow for loop

8 vues (au cours des 30 derniers jours)
sani
sani le 18 Jan 2020
Modifié(e) : sani le 19 Jan 2020
I have a very slow for loop in my script, it meant to sort a column in a text file (about 500,000 rows) and remove lines with negative values. it took ~10600 sec to finish this lines. Is this normal? any way to improve it?
this is the code:
for i = 1:height (T1(:,2)) %remove negative numbers from column 2
if lt(T1.energy,0)
continue;
else
T1(T1.energy < 0, :) = [];
end
end
thanks!

Réponse acceptée

Walter Roberson
Walter Roberson le 18 Jan 2020
You do not use the variable i inside your for loop, so you are testing the entire energy variable of the table every time through the loop.
if lt(T1.energy,0)
is a vector test, and will only be true if all of the entries in T1.energy are < 0 .
You probably just want,
T1(T1.energy < 0, :) = [];
with no loop -- just the single statement.

Plus de réponses (1)

sani
sani le 19 Jan 2020
Modifié(e) : sani le 19 Jan 2020
thanks! it reduced to 0.3 sec, amazing!

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by