How to reduce a matrix size
81 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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!
0 commentaires
Réponse acceptée
Jan
le 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.
0 commentaires
Plus de réponses (1)
Christian Zitzmann
le 9 Juin 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]);
Voir également
Catégories
En savoir plus sur Resizing and Reshaping Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!