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 comentarios

Austin Thai
Austin Thai el 17 de Abr. de 2021
Editada: Austin Thai el 17 de Abr. de 2021
Have you checked out the movmean function? You should be able to do
y[n,:]=movmean(x(n,:),3)

Iniciar sesión para comentar.

 Respuesta aceptada

the cyclist
the cyclist el 17 de Abr. de 2021
Editada: the cyclist el 17 de Abr. de 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

Más respuestas (0)

Preguntada:

el 17 de Abr. de 2021

Comentada:

el 17 de Abr. de 2021

Community Treasure Hunt

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

Start Hunting!

Translated by