Create a moving average

124 ビュー (過去 30 日間)
Dirk 2013 年 6 月 28 日
編集済み: Adam Danz 2021 年 9 月 19 日
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 件のコメント
arman arefi
arman arefi 2020 年 3 月 27 日
You can use Moving Average Function in the FileExchange. Please find the link below:



Andrei Bobrov
Andrei Bobrov 2013 年 6 月 28 日
A - your data
L = filter(ones(101,1)/101,1,[A(:) zeros(50,1)]);
out = L(51:end);

その他の回答 (5 件)

Image Analyst
Image Analyst 2013 年 6 月 28 日
編集済み: Image Analyst 2013 年 6 月 28 日
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 件のコメント
Image Analyst
Image Analyst 2017 年 11 月 30 日


Grzegorz Knor
Grzegorz Knor 2017 年 4 月 7 日
編集済み: Adam Danz 2021 年 9 月 19 日
From MATLAB R2016a there is a function movmean which does not require additional toolboxes.
  1 件のコメント
Image Analyst
Image Analyst 2017 年 4 月 7 日
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 2013 年 6 月 28 日
If you have the financial toolbox, doc movavg()....
[Short, Long] = movavg(Asset, Lead, Lag, Alpha)

the cyclist
the cyclist 2013 年 6 月 28 日
This page of the MATLAB documentation has an example of using the filter() command to calculate a moving average:
  1 件のコメント
Dirk 2013 年 6 月 28 日
Thanks. The filter function is set to average data from the previous n measurements. Is there a simple way to specify a different averaging criteria? Thanks


Jan 2013 年 6 月 28 日
There are many moving average filters in the FileExchange. Whenever a standard problem occurs, looking in the FEX is a good idea:

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by