Is it possible to vectorize this ?
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Omar Ali Muhammed
am 26 Apr. 2021
Bearbeitet: Matt J
am 26 Apr. 2021
A matrix A(100x1000) a selective column defined in B(1x1000). The required processing is the mean of non zero elements of each column of A referenced by B. Without the use of loops.
Regards
0 Kommentare
Akzeptierte Antwort
Matt J
am 26 Apr. 2021
Bearbeitet: Matt J
am 26 Apr. 2021
A(~A)=nan;
result=mean(A(:,B),1,'omitnan')
Weitere Antworten (1)
Jan
am 26 Apr. 2021
AB = A(:, B);
result = sum(AB, 1) ./ sum(AB ~= 0, 1);
mean('omitnan') replaces the NaNs by zeros for the summation and calculates the number of non-NaNs by sum(~isnan(AB)). Therefore this code should be faster, because it avoids replacing zeros by NaNs and back to zeros again.
1 Kommentar
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!