How to do average of different arrays of a matrix?
1 view (last 30 days)
Show older comments
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 Comments
Accepted Answer
Hiro Yoshino
on 8 Jan 2020
Edited: Hiro Yoshino
on 8 Jan 2020
Stephen Cobeldick is right.
Try this:
% X --> 3490 x 63 matrix
X = reshape(X, 5, 63, 698);
X = mean(X);
X = reshape(X, 698, 63);
More Answers (1)
KALYAN ACHARJYA
on 8 Jan 2020
Edited: KALYAN ACHARJYA
on 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');
See Also
Categories
Find more on Resizing and Reshaping Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!