How to do average of different arrays of a matrix?

2 Ansichten (letzte 30 Tage)
AS
AS am 8 Jan. 2020
Kommentiert: AS am 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 Kommentare
Stephen23
Stephen23 am 8 Jan. 2020
You don't need a loop, just reshape and mean.
AS
AS am 8 Jan. 2020
not working reshape and mean..

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Hiro Yoshino
Hiro Yoshino am 8 Jan. 2020
Bearbeitet: Hiro Yoshino am 8 Jan. 2020
Try this:
% X --> 3490 x 63 matrix
X = reshape(X, 5, 63, 698);
X = mean(X);
X = reshape(X, 698, 63);

Weitere Antworten (1)

KALYAN ACHARJYA
KALYAN ACHARJYA am 8 Jan. 2020
Bearbeitet: KALYAN ACHARJYA am 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');

Kategorien

Mehr zu Statistics and Machine Learning Toolbox finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by