VERY slow for loop

7 Ansichten (letzte 30 Tage)
sani
sani am 18 Jan. 2020
Bearbeitet: sani am 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!

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 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.

Weitere Antworten (1)

sani
sani am 19 Jan. 2020
Bearbeitet: sani am 19 Jan. 2020
thanks! it reduced to 0.3 sec, amazing!

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by