How to reduce a matrix size

I want to reduce the size of a matrix (M,N) by a fourth by averaging the values of neighboring cells.
So for instance the cells (1,1), (1,2), (2,1) and (2,2) in the old matrix will now be represented by their average which will be stored in (1,1) of the new matrix.
How can I code this?
Thanks!

 Respuesta aceptada

Jan
Jan el 12 de Mzo. de 2012

3 votos

X = rand(20, 30);
R = reshape(X, 2, 10, 2, 15);
S = sum(sum(R, 1), 3) * 0.25;
Y = reshape(S, 10, 15);
This can be wriiten in one line also. If more speed is needed you can use the faster C-Mex FEX: BlockMean.

Más respuestas (1)

Christian Zitzmann
Christian Zitzmann el 9 de Jun. de 2020

0 votos

The question is very old and propably already solved, but I've got a very nice solution as well.
X = reshape(1:400,20,20);
Y = imresize(X,[3,3]);

Categorías

Preguntada:

el 12 de Mzo. de 2012

Comentada:

el 1 de Jun. de 2021

Community Treasure Hunt

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

Start Hunting!

Translated by