How to do average of different arrays of a matrix?

1 vue (au cours des 30 derniers jours)
AS
AS le 8 Jan 2020
Commenté : AS le 8 Jan 2020
I have a matrix having dimension 3490 by 63 and I want make it 698 by 63 by taking average of five data points of different row in a column. For single column my code is working but I want do the same for rest of 62 columns. please help me on this.
clc;clear all;close all;
load data1.dat;
X=data1;
X1=X(:,1)
n=1;
m=5;
sum=[ ] ;
fid1=fopen('smthdata1.dat','w');
for i=1:698;
sum=0;
for j1=n:m
sum=sum+X1(j1);
end
ad_n=(sum./5);
fprintf(fid1,'%d \n',ad_n);
n=m+1;
m=m+5;
i=i+1;
end
fclose(fid1);
  2 commentaires
Stephen23
Stephen23 le 8 Jan 2020
You don't need a loop, just reshape and mean.
AS
AS le 8 Jan 2020
not working reshape and mean..

Connectez-vous pour commenter.

Réponse acceptée

Hiro Yoshino
Hiro Yoshino le 8 Jan 2020
Modifié(e) : Hiro Yoshino le 8 Jan 2020
Try this:
% X --> 3490 x 63 matrix
X = reshape(X, 5, 63, 698);
X = mean(X);
X = reshape(X, 698, 63);
  1 commentaire
AS
AS le 8 Jan 2020
Thank you so much. Now it is working.

Connectez-vous pour commenter.

Plus de réponses (1)

KALYAN ACHARJYA
KALYAN ACHARJYA le 8 Jan 2020
Modifié(e) : KALYAN ACHARJYA le 8 Jan 2020
Yes, Stephen is rightly said, other options, array function or you can use this custom function for Block-wise Operations (5,1)
mat_data=rand(3490,63);
result=sepblockfun(mat_data,[5,1],'mean');

Catégories

En savoir plus sur Resizing and Reshaping Matrices dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by