How to average columns of matrix without loop?

2 visualizaciones (últimos 30 días)
Hi! I have a rather big (about 1 000 000 X 10 000) matrix. I want to averaging n column blockes. For example:
n = 3;
A = [1 2 3 4 5 6 7 8 9;10 4 1 2 6 4 1 -4 0];
The result shuold be:
res =
2 5 8
5 4 1
I know it could be done with a for loop using mean, but in my code that would be inside of other for loops, which makes a huge runtime. What I basically need is a mooving averege without overleap, but I couldn't find such matlab function. I wonder, if there is a loop free solution for this.

Respuesta aceptada

Vladimir Sovkov
Vladimir Sovkov el 6 de En. de 2021
reshape(mean(reshape(A',n,[]))',size(A,2)/n,[])'

Más respuestas (1)

KSSV
KSSV el 6 de En. de 2021
There are functions possible to do the said. Read about movemean, blockproc, reshape.

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Productos


Versión

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by