# How to average columns of matrix without loop?

1 view (last 30 days)
Csanad Levente Balogh on 6 Jan 2021
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.

Vladimir Sovkov on 6 Jan 2021
reshape(mean(reshape(A',n,[]))',size(A,2)/n,[])'

KSSV on 6 Jan 2021
There are functions possible to do the said. Read about movemean, blockproc, reshape.

### Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

R2019b

### Community Treasure Hunt

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

Start Hunting!