Aggregate data every 10 seconds
3 views (last 30 days)
Show older comments
hello everyone, I have a table file "TICKTYPE" with a data column "TICKTYPE.mean" class double and a column "TICKTYPE.x_TIME_" class duration in the format HH:mm:ss.SSS.
I would like to aggregate the data of TICKTYPE.mean every 10 seconds. thank you who will help me.
this is the first row for example:
{'2023.06.29'} 08:55:10.753 15145
Accepted Answer
Matt J
on 29 Jun 2023
This syntax of retime looks like the applicable one,
9 Comments
Mathieu NOE
on 30 Jun 2023
well , I don't want to say something stupid here ,especially as I don't think I am expert with timetable and retime , but my attempt to compare retime results with my own code (certainly not the best) gives some minor deltas . Not sure why .
only thing I noticed is that the original time data has not constant spacing but I suppose that's something retime does handle (to be confirmed?)
so here is it , whatever it proves or not and sorry if I just brought more confusion !
does retime fill missing bins with interpolated data ?
the x axis on the plots are simply the samples count after 10 s averaging
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1423348/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1423353/image.png)
load('TICKTYPE2.mat')
xBID = TICKTYPE.x_BID_;
xASK = TICKTYPE.x_ASK_;
% 10 seconds average results with retime
T=table2timetable(TICKTYPE);
T(:,1)=[];
tt= retime(T,'regular','mean','TimeStep',seconds(10));
% my own 10 s average computation
tx = (TICKTYPE.x_TIME_);
s = seconds(tx);
% NB that s spacing is not constant
dt = 10; % seconds
start = floor(s(1));
stop = dt*ceil(s(end)/dt);
n = (stop-start)/dt;
for ck = 1:n
ind1 = start + (ck-1)*dt;
ind2 = ind1 + dt -1;
id = (s>= ind1 & s<= ind2); % NB that s spacing is not constant
xBID_10s_mean(ck,1) = mean(xBID(id));
xASK_10s_mean(ck,1) = mean(xASK(id));
end
% plot the results
figure(1)
plot(tt.x_BID_);
hold on
plot(xBID_10s_mean);
title('x BID');
legend('retime','own code');
figure(2)
plot(tt.x_ASK_);
hold on
plot(xASK_10s_mean);
title('x ASK');
legend('retime','own code');
More Answers (0)
See Also
Categories
Find more on Tables 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!