Average sections of a timetable

13 views (last 30 days)
I have a data timetable. One of the variables is a flag that determines sample time and background time. For the purposes of my data processing, I want to average the sample times to 1 minute intervals.
Currently, I extract the rows with filterstate == 0 and use retime, then I concatenate the timetables and sort the rows in time. This creates an artifact where the first sample time will be rounded to the previous minute and creates a data processing issue.
Is there a better way to do this, or could I specify in retime to round to the next minute?
load example_tt.mat
% EDIT to show raw data
example_tt(6612:6635,:)
ans = 24×4 timetable
Time Signal power filter state Tau ___________________ ____________________________________ ____________________________________ ____________ ________________________ 2022-08-13 22:35:53 11.236 4.9098 3.1298 3.4968 591.27 613.06 454.61 699 1 6.9647e-05 2.7618e-05 2022-08-13 22:35:54 10.923 4.1274 3.2449 2.7163 591.57 612.87 451.74 698.23 1 6.9801e-05 2.7604e-05 2022-08-13 22:35:55 12.134 4.7342 2.9405 4.6952 591.98 609.79 451.75 696.94 1 6.988e-05 2.7639e-05 2022-08-13 22:35:56 11.795 5.1227 2.5436 3.9818 591.49 602.53 452.69 695.75 1 6.9703e-05 2.764e-05 2022-08-13 22:35:57 12.738 4.7315 2.4259 3.2908 591.95 595.63 453.57 695.02 1 6.9796e-05 2.7626e-05 2022-08-13 22:35:58 12.309 5.6532 4.7778 3.8169 591.76 592.55 452.97 694.57 1 6.9668e-05 2.7635e-05 2022-08-13 22:35:59 13.019 5.1435 3.7599 4.7426 591.61 600.95 452.89 693.76 1 6.9812e-05 2.7603e-05 2022-08-13 22:36:00 12.539 4.9198 3.3075 3.9967 591.59 609.3 454.07 692.3 1 6.9839e-05 2.76e-05 2022-08-13 22:36:01 11.001 5.2377 3.1239 3.392 592.7 609.82 451.41 691.07 1 6.982e-05 2.7604e-05 2022-08-13 22:36:02 12.1 4.1433 3.8361 4.071 592.07 608.77 452.16 690.28 1 6.9765e-05 2.7612e-05 2022-08-13 22:36:03 11.941 6.0223 3.9551 3.6893 592.15 602.95 451.41 689.82 1 6.9816e-05 2.7644e-05 2022-08-13 22:36:04 12.381 4.9697 2.2283 4.6778 591.67 603.88 452.09 688.76 1 6.9754e-05 2.7607e-05 2022-08-13 22:36:05 11.899 5.0105 3.7079 4.2653 591.85 609.52 452.29 688.46 1 6.9838e-05 2.7611e-05 2022-08-13 22:36:06 12.787 5.2006 3.1608 3.8318 592.04 617.04 452.26 686.84 1 6.9734e-05 2.761e-05 2022-08-13 22:36:07 11.274 6.1099 4.2194 3.2188 592.07 616.28 451.56 686.4 1 6.9806e-05 2.7615e-05 2022-08-13 22:36:08 11.485 4.7791 3.541 4.2523 592.23 611.85 451.32 685.88 1 6.9813e-05 2.7648e-05
example_avg = retime_sample(example_tt);
example_avg(885:910,:)
ans = 26×4 timetable
Time Signal power filter state Tau ___________________ ____________________________________ ____________________________________ ____________ ________________________ 2022-08-13 22:35:53 11.236 4.9098 3.1298 3.4968 591.27 613.06 454.61 699 1 6.9647e-05 2.7618e-05 2022-08-13 22:35:54 10.923 4.1274 3.2449 2.7163 591.57 612.87 451.74 698.23 1 6.9801e-05 2.7604e-05 2022-08-13 22:35:55 12.134 4.7342 2.9405 4.6952 591.98 609.79 451.75 696.94 1 6.988e-05 2.7639e-05 2022-08-13 22:35:56 11.795 5.1227 2.5436 3.9818 591.49 602.53 452.69 695.75 1 6.9703e-05 2.764e-05 2022-08-13 22:35:57 12.738 4.7315 2.4259 3.2908 591.95 595.63 453.57 695.02 1 6.9796e-05 2.7626e-05 2022-08-13 22:35:58 12.309 5.6532 4.7778 3.8169 591.76 592.55 452.97 694.57 1 6.9668e-05 2.7635e-05 2022-08-13 22:35:59 13.019 5.1435 3.7599 4.7426 591.61 600.95 452.89 693.76 1 6.9812e-05 2.7603e-05 2022-08-13 22:36:00 12.245 5.8375 3.4445 4.2451 590.33 603.19 455.57 706.19 0 6.9969e-05 2.6849e-05 2022-08-13 22:36:00 12.539 4.9198 3.3075 3.9967 591.59 609.3 454.07 692.3 1 6.9839e-05 2.76e-05 2022-08-13 22:36:01 11.001 5.2377 3.1239 3.392 592.7 609.82 451.41 691.07 1 6.982e-05 2.7604e-05 2022-08-13 22:36:02 12.1 4.1433 3.8361 4.071 592.07 608.77 452.16 690.28 1 6.9765e-05 2.7612e-05 2022-08-13 22:36:03 11.941 6.0223 3.9551 3.6893 592.15 602.95 451.41 689.82 1 6.9816e-05 2.7644e-05 2022-08-13 22:36:04 12.381 4.9697 2.2283 4.6778 591.67 603.88 452.09 688.76 1 6.9754e-05 2.7607e-05 2022-08-13 22:36:05 11.899 5.0105 3.7079 4.2653 591.85 609.52 452.29 688.46 1 6.9838e-05 2.7611e-05 2022-08-13 22:36:06 12.787 5.2006 3.1608 3.8318 592.04 617.04 452.26 686.84 1 6.9734e-05 2.761e-05 2022-08-13 22:36:07 11.274 6.1099 4.2194 3.2188 592.07 616.28 451.56 686.4 1 6.9806e-05 2.7615e-05
function [raw_TT_retimed] = retime_sample(raw_TT)
% Take a raw data timetable and convert the sample times to 1 minute
% averages
sample_times = raw_TT(raw_TT.('filter state') == 0,:);
sample_times = retime(sample_times,"regular",'mean','TimeStep',minutes(1));
raw_TT_retimed = [sample_times;raw_TT(raw_TT.('filter state')==1,:)];
raw_TT_retimed = sortrows(raw_TT_retimed,'Time');
end
  2 Comments
Cris LaPierre
Cris LaPierre on 22 Mar 2023
Edited: Cris LaPierre on 22 Mar 2023
How can you be sure that won't introduce the same data processing issue into your data?
Poison Idea fan
Poison Idea fan on 22 Mar 2023
The artifact is still present, but the erroneous point ends up being added to the beginning of each filter time. When I select the background time, that point does not appear in the time range I need for background.

Sign in to comment.

Accepted Answer

Poison Idea fan
Poison Idea fan on 22 Mar 2023
Use 'IncludedEdge','right'

More Answers (0)

Products


Release

R2022b

Community Treasure Hunt

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

Start Hunting!