Create a time array

133 views (last 30 days)
Miguel Albuquerque
Miguel Albuquerque on 30 Jun 2022
Answered: Steven Lord on 30 Jun 2022
Hey guys, thanks in advance.
I have one matrix of data( this is a char data) that has two times : as visible in this figure
'Canal zero_timestamp.mat'
those numbers are: hour-minutes-seconds-miliseconds
I need to produce a time array with duration in seconds between first element of this matrix and the last element(17-11-09_923).
I wanted to conserve the miliseconds, is there anyway?

Accepted Answer

Steven Lord
Steven Lord on 30 Jun 2022
val=['17-10-58_086'
'17-11-09_923'];
val = string(val);
Convert the string array val into a format the duration function knows how to import.
val = replace(val, '-', ':');
val = replace(val, '_', '.');
d = duration(val)
d = 2×1 duration array
17:10:58 17:11:09
The fractional seconds are present, they're just not displayed with the default display Format. We can change the Format to show them.
d.Format = 'hh:mm:ss.SSS'
d = 2×1 duration array
17:10:58.086 17:11:09.923
Now compute the difference in seconds.
seconds(diff(d))
ans = 11.8370

More Answers (2)

Fangjun Jiang
Fangjun Jiang on 30 Jun 2022
Edited: Fangjun Jiang on 30 Jun 2022
val=['17-10-58_086'
'17-11-09_923']
val = 2×12 char array
'17-10-58_086' '17-11-09_923'
StartEnd=datetime(val,'InputFormat','HH-mm-ss_SSS')
StartEnd = 2×1 datetime array
30-Jun-2022 17:10:58 30-Jun-2022 17:11:09
TimeVector=StartEnd(1):seconds(1):StartEnd(2)
TimeVector = 1×12 datetime array
30-Jun-2022 17:10:58 30-Jun-2022 17:10:59 30-Jun-2022 17:11:00 30-Jun-2022 17:11:01 30-Jun-2022 17:11:02 30-Jun-2022 17:11:03 30-Jun-2022 17:11:04 30-Jun-2022 17:11:05 30-Jun-2022 17:11:06 30-Jun-2022 17:11:07 30-Jun-2022 17:11:08 30-Jun-2022 17:11:09
datestr(TimeVector,'HH-MM-SS_FFF')
ans = 12×12 char array
'17-10-58_086' '17-10-59_086' '17-11-00_086' '17-11-01_086' '17-11-02_086' '17-11-03_086' '17-11-04_086' '17-11-05_086' '17-11-06_086' '17-11-07_086' '17-11-08_086' '17-11-09_086'

Voss
Voss on 30 Jun 2022
val = [ ...
'17-10-58_086'; ...
'17-11-09_923'; ...
]
val = 2×12 char array
'17-10-58_086' '17-11-09_923'
dt = datetime(val,'InputFormat','HH-mm-ss_SSS')
dt = 2×1 datetime array
30-Jun-2022 17:10:58 30-Jun-2022 17:11:09
dt_diff = dt(end)-dt(1)
dt_diff = duration
00:00:11
% the milliseconds are present in dt_diff:
seconds(dt_diff)
ans = 11.8370
milliseconds(dt_diff)
ans = 11837

Categories

Find more on Data Type Conversion in Help Center and File Exchange

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!