Create a moving average
62 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Dirk
am 28 Jun. 2013
Bearbeitet: Adam Danz
am 19 Sep. 2021
Hi There, How can I calculate a moving average for a column of data. For instance i want to average the 50 points either side of each data point in my column. Thanks
1 Kommentar
arman arefi
am 27 Mär. 2020
You can use Moving Average Function in the FileExchange. Please find the link below:
Akzeptierte Antwort
Andrei Bobrov
am 28 Jun. 2013
A - your data
L = filter(ones(101,1)/101,1,[A(:) zeros(50,1)]);
out = L(51:end);
0 Kommentare
Weitere Antworten (5)
Image Analyst
am 28 Jun. 2013
Bearbeitet: Image Analyst
am 28 Jun. 2013
For a 1D column vector:
movingAverage = conv(yourSignal, ones(101,1)/101, 'same');
For a 2D array of columns:
movingAverage = conv2(yourSignal, ones(101,1)/101, 'same');
If you don't want the central pixel to be included in the average and have ONLY the 50 on either side, use
kernel = ones(101,1)/100;
kernel(51) = 0;
movingAverage = conv(yourSignal, kernel, 'same');
Same for a 2D matrix except use conv2 instead of conv. conv() and conv2() are highly optimized and very fast.
4 Kommentare
Nuchto
am 30 Nov. 2017
So you could use ones(101,1) first, and onces it is convolved you can divide by 101?
Grzegorz Knor
am 7 Apr. 2017
Bearbeitet: Adam Danz
am 19 Sep. 2021
1 Kommentar
Image Analyst
am 7 Apr. 2017
True, and it offers some edge handling options ('shrink', 'discard', 'fill') that conv2() does not have.
conv2() also does not require any toolboxes because it's in base MATLAB.
Marc
am 28 Jun. 2013
If you have the financial toolbox, doc movavg()....
[Short, Long] = movavg(Asset, Lead, Lag, Alpha)
0 Kommentare
the cyclist
am 28 Jun. 2013
This page of the MATLAB documentation has an example of using the filter() command to calculate a moving average:
Jan
am 28 Jun. 2013
There are many moving average filters in the FileExchange. Whenever a standard problem occurs, looking in the FEX is a good idea:
0 Kommentare
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!