Aggregate data every 10 seconds
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
roberto
el 29 de Jun. de 2023
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
2 comentarios
Respuesta aceptada
Matt J
el 29 de Jun. de 2023
This syntax of retime looks like the applicable one,
9 comentarios
Mathieu NOE
el 30 de Jun. de 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');
Más respuestas (0)
Ver también
Categorías
Más información sobre Tables en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!