How to reduce a matrix size

109 views (last 30 days)
Oluwa KuIse
Oluwa KuIse on 12 Mar 2012
Commented: Martin Grden on 1 Jun 2021
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!

Accepted Answer

Jan
Jan on 12 Mar 2012
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.

More Answers (1)

Christian Zitzmann
Christian Zitzmann on 9 Jun 2020
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]);

Categories

Find more on Resizing and Reshaping Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!