Get proper time in seconds at x-axis from timestamps
3 views (last 30 days)
Show older comments
Hey, I'm a new matlab user and hope you can help me with this problem.
I have numerous files. When I plot the data as I want it, I get the sample number on the x-axis (image 1). But instead I would like to get the time development in seconds. Starting with 0 seconds on the x-axis (first file) and then the course of time of these files.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1311920/image.png)
I tried to extract the time from the file (example: (H:MI:S) = (16-39-44)) but it didnt work out.
When I plot it at the moment it looks like this (image 2) and gives me the sample number in x-axis.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1311925/image.png)
Hope you can help. Thanks a lot in advance for recommendations!
0 Comments
Accepted Answer
Cameron
on 2 Mar 2023
Edited: Cameron
on 2 Mar 2023
%fileNames is the list of your files and t is a duration array in minutes
%without the milliseconds as you indicated earlier
fileNames = ["Baseline_Transmission__0__16-39-44-652.txt";
"Mineral Base_Transmission__0__16-40-21-553.txt";
"Mineral Licht_Transmission__0__16-40-42-818.txt";
"Mineral Licht_Transmission__10__16-41-06-585.txt"];
NumOnly = regexp(fileNames,'\d*','Match');
for r = 1:length(NumOnly)
n = str2double(NumOnly{r});
timeArray(r,1) = strjoin([n(2),":",n(3),":",n(4)],'');
end
dt = datevec(datetime(timeArray,'InputFormat',"HH:mm:ss"));
t = duration(dt(:,4:end));
for r = 1:length(NumOnly)
n = str2double(NumOnly{r});
timeArray(r,1) = strjoin([n(2),":",n(3),":",n(4),'.',n(5),],'');
end
t = datetime(timeArray,'InputFormat',"HH:mm:ss.SSS",'Format','HH:mm:ss.SSS');
2 Comments
Peter Perkins
on 13 Mar 2023
If you want to end up with durations from text, there is probably no need to create datetimes as an intermediate step:
duration("12:34:56")
duration("12:34:56.789",Format="hh:mm:ss.SSS")
In any case, don't use datevec+duration to get durations from a datetime, just use timeofday:
timeofday(datetime("now"))
More Answers (0)
See Also
Categories
Find more on Data Import and Analysis in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!