Moving average - for loop vectorization
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello. I've got a problem that my loop doesn't execute fast enough, even though it is simple moving average. Is there any smart way to make it work faster? x is a huge array, and there is some indexing using : in every iteration, that's probably the reason.
len = length(x); % around 6000000
A = 1/200;
for n = 100+1:len-100
MA = A*sum(x(n - 100: n + 100));
% Do something with MA. However I know that the above part is the slow one
end
I was trying to find some information about vectorization, but I can't see how could I apply these methods.
0 commentaires
Réponse acceptée
Stephen23
le 21 Avr 2016
Modifié(e) : Stephen23
le 21 Avr 2016
>> xi = 0:0.1:2*pi;
>> yi = sin(xi)+0.4*rand(size(xi))-0.2;
>> N = 4; % length of moving average
>> yo = conv(yi,ones(1,N),'same')/N;
>> plot(xi,yi, xi,yo)
3 commentaires
yari lazzaro
le 4 Déc 2018
Hi, do you know how this solution could be adapted in case I want to calculate a moving average along the rows of a matrix? Thanks
Plus de réponses (0)
Voir également
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!