Calculate average over each specific interval
    19 views (last 30 days)
  
       Show older comments
    
Hi,
I'm trying to calculate the mean every 5 seconds of data till the end.
so x= (1,63369) % my data in Newton Meter which is about 30.9419 seconds long
t = 5*2048 % 5 seconds interval.
I'd like to have your help in (1- how to make it calculate the mean in increaments from start till the end 2- how to deal with the last posrtion of the data that shorter than 5 seconds)
any help would be appreciate it. Thanks in advance. 
2 Comments
  Image Analyst
      
      
 on 7 Jul 2021
				Please attach your time and signal data (I'm guessing it's t and x) in a .mat file with the paperclip icon
save('answers.mat', 't', 'x');
so we can try some things.
Accepted Answer
  dpb
      
      
 on 7 Jul 2021
        
      Edited: dpb
      
      
 on 8 Jul 2021
  
      2) first -- how to deal with the last posrtion of the data that shorter than 5 seconds" 
How do you WANT to deal with it?  You can either ignore it and have fix(numel/5) samples or average the values that do have in the last segment -- it's your choice.
1)  The classic MATLAB way is to reshape() and use mean() --
a) Ignore last partial segment --
N=5;                                                % number elements to average over
mnX=mean(reshape(x(1:N*fix(numel(x)/N)),N,[]));     % average over N elements ignoring end values
b) Deal with odd end 
x=[x nan(1,N*ceil(numel(x)/N)-numel(x))];           % augment vector to make even
mnX=mean(reshape(x,N,[]),1,'omitnan');              % average over N elements ignoring NaN elements
3 Comments
  dpb
      
      
 on 8 Jul 2021
				Must've made a typo somewhere; works for me---
>> x=rand(1,63369);
>> numel(x)
ans =
       63369
>> N
N =
     5
>> ceil(numel(x)/5)
ans =
       12674
>> N*ceil(numel(x)/N)
ans =
       63370
>> ans/N
ans =
       12674
>> x=[x nan(1,N*ceil(numel(x)/N)-numel(x))];
>> numel(x)
ans =
       63370
>> mnX=mean(reshape(x(1:5*fix(numel(x)/5)),5,[]));
>> whos mnX
  Name      Size                Bytes  Class     Attributes
  mnX       1x12674            101392  double              
>> 
More Answers (0)
See Also
Categories
				Find more on Logical 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!

