Create a time array

158 Ansichten (letzte 30 Tage)
Miguel Albuquerque
Miguel Albuquerque am 30 Jun. 2022
Beantwortet: Steven Lord am 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?

Akzeptierte Antwort

Steven Lord
Steven Lord am 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

Weitere Antworten (2)

Fangjun Jiang
Fangjun Jiang am 30 Jun. 2022
Bearbeitet: Fangjun Jiang am 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 am 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

Kategorien

Mehr zu Data Type Conversion finden Sie in Help Center und File Exchange

Produkte


Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by