Effacer les filtres
Effacer les filtres

how to average specific rows of all columns?

11 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.

Catégories

En savoir plus sur Operators and Elementary Operations dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by