Create a moving average
显示 更早的评论
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
2020-3-27
You can use Moving Average Function in the FileExchange. Please find the link below:
采纳的回答
更多回答(5 个)
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 个评论
Nuchto
2017-11-29
Thanks. Why do you divide by 101?
Image Analyst
2017-11-29
You divide by however many 1's there are in the kernel. If you don't then you're not getting the average. Remember the average is the sum divided by the number of elements in the sum. If you didn't have 101, then you'd simply be summing 101 values and the resulting image would be 101 times as bright rather than in the same intensity range as the original.
Nuchto
2017-11-30
So you could use ones(101,1) first, and onces it is convolved you can divide by 101?
Image Analyst
2017-11-30
Yes.
Grzegorz Knor
2017-4-7
编辑:Adam Danz
2021-9-19
3 个投票
1 个评论
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
1 个投票
If you have the financial toolbox, doc movavg()....
[Short, Long] = movavg(Asset, Lead, Lag, Alpha)
the cyclist
2013-6-28
1 个投票
This page of the MATLAB documentation has an example of using the filter() command to calculate a moving average:
Jan
2013-6-28
1 个投票
There are many moving average filters in the FileExchange. Whenever a standard problem occurs, looking in the FEX is a good idea:
类别
在 帮助中心 和 File Exchange 中查找有关 Correlation and Convolution 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!