Moving average - for loop vectorization
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Dawid Smolen
am 21 Apr. 2016
Kommentiert: Stephen23
am 5 Dez. 2018
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 Kommentare
Akzeptierte Antwort
Stephen23
am 21 Apr. 2016
Bearbeitet: Stephen23
am 21 Apr. 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 Kommentare
yari lazzaro
am 4 Dez. 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
Weitere Antworten (0)
Siehe auch
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!