M-point averaging filter

3 views (last 30 days)
Sarah Maas
Sarah Maas on 17 Apr 2021
Commented: Image Analyst on 17 Apr 2021
I need to implement a one-dimensional M-point averaging filter for a matrix consisting of values (pixels of an image) between 0 and 1, such that each pixel value is replaced by the equal-weighted average of its (M 1)/2 neighbors to its left, (M 1)/2 neighbors to its right, and the pixel value itself.
For instance, for M = 3, it would be like:
y[n,m]= 1/3 (x[n,m1] + x[n,m] + x[n,m+1])
Please help me out with this. Thank you.
  2 Comments
Austin Thai
Austin Thai on 17 Apr 2021
Edited: Austin Thai on 17 Apr 2021
Have you checked out the movmean function? You should be able to do
y[n,:]=movmean(x(n,:),3)

Sign in to comment.

Accepted Answer

the cyclist
the cyclist on 17 Apr 2021
Edited: the cyclist on 17 Apr 2021
You should be able to use the movmean function. For example:
% Define some data
A = reshape(1:15,3,5);
% Take the moving average of 3 elements, across the rows.
movmean(A,3,2)
ans = 3×5
2.5000 4.0000 7.0000 10.0000 11.5000 3.5000 5.0000 8.0000 11.0000 12.5000 4.5000 6.0000 9.0000 12.0000 13.5000

More Answers (0)

Community Treasure Hunt

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

Start Hunting!