Calculate average over each specific interval

14 views (last 30 days)
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
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.

Sign in to comment.

Accepted Answer

dpb
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
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
>>
Saad Alqahtani
Saad Alqahtani on 8 Jul 2021
(b) works now as well. It looks like I had some typo somewhere. Thank you so much. I really appreciate your help!

Sign in to comment.

More Answers (0)

Categories

Find more on MATLAB in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!