calculate the mean of several columns

조회 수: 81 (최근 30일)
Sobhan
Sobhan 2012년 4월 4일
댓글: Walter Roberson 2015년 12월 2일
Hi all, I am new to Matlab and I am struggling with this problem. I have a matrix with 112 columns and 100 rows. How can I calculate the mean of column 1-7 , 8-14, 15-21,...., 106-112 and put the a new matrix with 16 columns and 100 rows. I appreciate your help Sobhan
  댓글 수: 2
Andrei Bobrov
Andrei Bobrov 2012년 4월 5일
eg
A = rand(100,112);
fun = @(block_struct)mean(block_struct.data,2);
out = blockproc(A,[100,7],fun);
Walter Roberson
Walter Roberson 2015년 12월 2일
KAUST comments "The best answer"

댓글을 달려면 로그인하십시오.

채택된 답변

Wayne King
Wayne King 2012년 4월 4일
One way is simply with a for loop
A = randn(100,112);
for nn = 0:15
B(:,nn+1) = mean(A(:,nn*7+1:(nn+1)*7),2);
end
  댓글 수: 1
Oleg Komarov
Oleg Komarov 2012년 4월 4일
I bet this is more efficient than the one liner and definitely more readable.

댓글을 달려면 로그인하십시오.

추가 답변 (3개)

Oleg Komarov
Oleg Komarov 2012년 4월 4일
A = rand(100,112);
B = reshape(mean(reshape(A.',7,[])),16,100).';
% Check
isequal(mean(A(2,8:14)),B(2,2))

Thomas
Thomas 2012년 4월 4일
You could reshape your matrix with 7 columns becoming 1 in the new matrix and taking the mean of each column
Eg.:
c=rand(4) % 4x4 matrix
d=reshape(c,[],2) % take two colm and form 1 total 2
p=mean(d) % mean of each columns
In your case
c=rand(100,112) % 4x4 matrix
d=mean(reshape(c,7,[])) % form 1600 columsns
final_out=(reshape(d,16,100)) % mean of each columns
  댓글 수: 3
Thomas
Thomas 2012년 4월 4일
thanks, edited accordingly..
Oleg Komarov
Oleg Komarov 2012년 4월 4일
Now, your mean is across the first 7 rows (first column). You have to transpose and re-transpose back. Honestly, in this cases I think Waynes solution is best in terms or readability and performance.

댓글을 달려면 로그인하십시오.


Sobhan
Sobhan 2012년 4월 5일
Dear all, Waynes` solution worked like a charm. You are awesome. Thanks a lot for your nice suggestions :)

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by