Taking Mean Of Specific Rows and Columns Within A Loop

조회 수: 5 (최근 30일)
Daniel Koziel
Daniel Koziel 2019년 11월 6일
댓글: Daniel Koziel 2019년 11월 6일
Hello, I have a data matrix of 288000 x 5 and I would like to compute the mean of column 2 in increments of 1200.
Therefore, I want to take the mean from 1:1200 and put it in slot 1 of a new vector. Then take 1201:2400 and put it in slot 2 of the new vector.
I have attempted it and was successful doing it outside of a loop but now that I attempt a loop I am having trouble.
y = 1;
for x = 1 : 1200: x < 288000
Mean(y) = mean(Data([x:(x+1199)],2);
y = y + 1;
end
It works for the first data point when I format it outside a loop like:
Mean(1) = mean(Data([1:1200]),2);
Mean(2) = mean(Data([1201:2400]),2);
and so on...
Thank you!

채택된 답변

Richard Brown
Richard Brown 2019년 11월 6일
You don't need a loop. Basic idea:
  • extract column 2.
  • Reshape it into a matrix with columns 1200 tall
  • take the mean of each column
The following code will work (so long as you have a number of rows that is a multiple of 1200)
means = mean(reshape(Data(:, 2), 1200, size(Data, 1)/1200))
  댓글 수: 1
Daniel Koziel
Daniel Koziel 2019년 11월 6일
Thank you my friend! I also found it to work inside a loop using:
y = 1;
for x = 1: 1200 : 287999
Min(1,y) = min(Data((x:x+1199),2)); %Calculating Min
Max(1,y) = max(Data((x:x+1199),2)); %Calculating Max
Mean(1,y) = mean(Data((x:x+1199),2)); %Calculating Mean
Var(1,y) = var(Data((x:x+1199),2)); %Calculating Var
y = y + 1;
end

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by