How to do average of different arrays of a matrix?

1 visualización (últimos 30 días)
AS
AS el 8 de En. de 2020
Comentada: AS el 8 de En. de 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 comentarios
Stephen23
Stephen23 el 8 de En. de 2020
You don't need a loop, just reshape and mean.
AS
AS el 8 de En. de 2020
not working reshape and mean..

Iniciar sesión para comentar.

Respuesta aceptada

Hiro Yoshino
Hiro Yoshino el 8 de En. de 2020
Editada: Hiro Yoshino el 8 de En. de 2020
Try this:
% X --> 3490 x 63 matrix
X = reshape(X, 5, 63, 698);
X = mean(X);
X = reshape(X, 698, 63);

Más respuestas (1)

KALYAN ACHARJYA
KALYAN ACHARJYA el 8 de En. de 2020
Editada: KALYAN ACHARJYA el 8 de En. de 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');

Categorías

Más información sobre Resizing and Reshaping Matrices en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by