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 commentaires

Austin Thai
Austin Thai le 17 Avr 2021
Modifié(e) : Austin Thai le 17 Avr 2021
Have you checked out the movmean function? You should be able to do
y[n,:]=movmean(x(n,:),3)

Connectez-vous pour commenter.

 Réponse acceptée

the cyclist
the cyclist le 17 Avr 2021
Modifié(e) : the cyclist le 17 Avr 2021

0 votes

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

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by