How can I get a numeric vector of time from two string vectors containing date and time?

6 次查看(过去 30 天)
I have data from Keysight benchvue and I tried first to export it to Matlab format but then the timestamp vector has values like
>> format long
>> Time_s(1)
ans =
1.312396739146183e+17
which is far from what I would expect. This data was taken at 2016-11-18 19:29:51:461 and converting that to a numeric gives
>> datenum(2016,11,18,19,29,51.461)
ans =
7.366528124011690e+05
I then tried to export it to csv-format instead and reading it with textscan. In that case I get two cell arrays, one containing the date and one containing the time. I don't understand how to use datevec to get the time as a numeric vector. I have tried
>> datevec(theContent{1} theContent{2})
datevec(theContent{1} theContent{2})
Error: Unexpected MATLAB expression.
where
>> theContent{1}(1)
ans =
'2016-11-18'
and
>> theContent{2}(1)
ans =
'19:29:51.461'
I also tried to concatenate the two arrays but then I get no blank space between them
>> strcat(theContent{1}(1),theContent{2}(1))
ans =
'2016-11-1819:29:51.461'
I guess (and hope) that this has a simple solution that some of You knows about.
Any suggestions are highly appreciated!
Thanks in advance!
Emanuel
  4 个评论
Walter Roberson
Walter Roberson 2016-11-21
This shows that the timestamps you are seeing are potentially in IEEE-1588 format. Unfortunately in the time I spent investigating, I did not figure out what the format is, exactly. No obvious conversion suggested itself.
Emanuel Gunnarsson
Emanuel Gunnarsson 2016-11-21
编辑:Emanuel Gunnarsson 2016-11-22
Hi again Walter! Thanks for spending time on it! I accually saw the post You linked to yesterday, but as You say: one does not get any wiser from that.

请先登录,再进行评论。

采纳的回答

Preethi
Preethi 2016-11-21
hi,
use datenum and datevec
>> datevec(7.366528124011690e+05)
ans =
2016 11 18 19 29 51.461
>> datetime(ans)
ans =
18-Nov-2016 19:29:51
hope this is useful.
  3 个评论
Emanuel Gunnarsson
Emanuel Gunnarsson 2016-11-21
Hi again Preethi!
Yeah!! Thank You so much!
Apart from that the paranthesis should be changed to curly brakcets, this really solved it for me! Now I can do what You suggested:
>> x = sprintf([theContent{1}{1},' ' ,theContent{2}{1}])
x =
2016-11-18 19:29:51.461
>> datevec(x)
ans =
2016 11 18 19 29 51.4610000000102
Great!

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Dates and Time 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by