Taking Mean Of Specific Rows and Columns Within A Loop

5 Ansichten (letzte 30 Tage)
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!

Akzeptierte Antwort

Richard Brown
Richard Brown am 6 Nov. 2019
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 Kommentar
Daniel Koziel
Daniel Koziel am 6 Nov. 2019
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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by