MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by FIR on 30 Nov 2012

I have 3 rows ans 192 column,i want to find mean for each 9 columns in row wise,

for ex if i have rand(3,192)

taking 3x9 , i need mean in row wise so i will have 3x1 matrix after finding mean

please help

for each 3x9 i want to perform

*No products are associated with this question.*

Answer by Andrei Bobrov on 30 Nov 2012

Edited by Andrei Bobrov on 30 Nov 2012

A = rand(3,192); n = 9;

s = size(A); out = squeeze(nanmean(reshape([A nan(s(1),mod(-s(2),n))],s(1),n,[]),2));

or

out = blockproc(A,[1 n],@(x)mean(x.data));

or

k = s(2) - rem(s(2),n); out = [squeeze(mean( reshape(A(:,1:k),s(1),[]),2 )) , mean(A(:,k+1:end),2)];

## 2 Comments

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/55264#comment_114545

192 is not divisible by 9, so what to do with the last columns?

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/55264#comment_114550

It's not "large" either. Before I read it I thought that he was talking hundreds of millions of elements, not five hundred and something. (And there is a "bug" for the case of calculating the mean for large numbers of singles)