VERY slow for loop

2 views (last 30 days)
sani
sani on 18 Jan 2020
Edited: sani on 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!

Accepted Answer

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

More Answers (1)

sani
sani on 19 Jan 2020
Edited: sani on 19 Jan 2020
thanks! it reduced to 0.3 sec, amazing!

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!