how to average specific rows of all columns?

2 vues (au cours des 30 derniers jours)
laxminarayana pasupuleti
laxminarayana pasupuleti le 10 Juin 2017
i am having 100x32 matrix in my data set. i would like to average 20 rows of all columns, like first 20rows average, next 20 and so..on...
can any one help in this problem.
  2 commentaires
the cyclist
the cyclist le 10 Juin 2017
Would the output be, in your example, a 5x32 matrix?
laxminarayana pasupuleti
laxminarayana pasupuleti le 12 Juin 2017
yes

Connectez-vous pour commenter.

Réponse acceptée

the cyclist
the cyclist le 10 Juin 2017
Modifié(e) : the cyclist le 10 Juin 2017
If I understand your question correctly, you can use the movmean command:
% Some made-up data
A = rand(100,32);
N = 20;
movingAverageA = movmean(A,[(N-1) 0]); % Trailing average of N rows
output = movingAverageA(N:N:end,:);
  3 commentaires
Image Analyst
Image Analyst le 12 Juin 2017
Did you get it working? You've accepted this answer so I assume so.
laxminarayana pasupuleti
laxminarayana pasupuleti le 12 Juin 2017
in my version its not woking..so i am trying latest version...

Connectez-vous pour commenter.

Plus de réponses (2)

J Yadav
J Yadav le 16 Jan 2019
to take a moving average of 1 to 20 rows, then 21-40 rows, then 41-60 rows etc.
of a data matrix with n rows and m columns.
you may also try:
for i=1:(n/20) % given that n is a multpile of 20 or your choice of no. of rows to average.
a=(i-1)*20+1;
b=(i-1)*20+20;
meandata(i,:) = mean(data(a:b,:),1);
end

Image Analyst
Image Analyst le 10 Juin 2017
Modifié(e) : Image Analyst le 12 Juin 2017
The first index are the rows. For example to average only the first 20 rows
columnMeans = mean(data([1:20], :), 1);
Or to average rows 34, 23, and 194, do
rowsToAverage = [34, 23, 194];
columnMeans = mean(data(rowsToAverage, :), 1);
  2 commentaires
laxminarayana pasupuleti
laxminarayana pasupuleti le 12 Juin 2017
this is not working
Image Analyst
Image Analyst le 12 Juin 2017
This seems to work:
data = randi(9, 100, 32) % Sample 100x32 data
columnMeans = [
mean(data([1:20], :), 1);
mean(data([21:40], :), 1);
mean(data([41:60], :), 1);
mean(data([61:80], :), 1);
mean(data([81:100], :), 1)]
Is that what you want?

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by