for loop taking too long to operate

11 Ansichten (letzte 30 Tage)
SChow
SChow am 6 Okt. 2020
Kommentiert: SChow am 6 Okt. 2020
I have a matrices (b1 and popx) with size 25000x50000, code is a vector which contains unique values in b1 (of length 300). For elements in popx which correspond to each unique value of b1, I need the sum of popx,
The below code takes very long (>2 hours) to operate, Any help to lower computation time is much appreciated
for i=1:300
popx1=popx;
popx1(b1~=code(i))=NaN;
popn=nansum(nansum(popx1));
popn1(i)=popn;
end;

Akzeptierte Antwort

Jos (10584)
Jos (10584) am 6 Okt. 2020
Pre-allocation, and recoding using logical indexing and sum should speed things up
popn1 = nan(300,1) ; % pre-allocation
for i=1:300
tf = b1 == code(i) ;
popn1(i) = sum(popx(tf), 'all') ;
end;

Weitere Antworten (0)

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