Borrar filtros
Borrar filtros

Get proper time in seconds at x-axis from timestamps

5 visualizaciones (últimos 30 días)
Maximilian
Maximilian el 2 de Mzo. de 2023
Comentada: Peter Perkins el 13 de Mzo. de 2023
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.
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.
Hope you can help. Thanks a lot in advance for recommendations!

Respuesta aceptada

Cameron
Cameron el 2 de Mzo. de 2023
Editada: Cameron el 2 de Mzo. de 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));
To keep the milliseconds, you could use this (thanks to @Star Strider):
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 comentarios
Maximilian
Maximilian el 3 de Mzo. de 2023
This helped a lot! Thank you.
Peter Perkins
Peter Perkins el 13 de Mzo. de 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")
ans = duration
12:34:56
duration("12:34:56.789",Format="hh:mm:ss.SSS")
ans = duration
12:34:56.789
In any case, don't use datevec+duration to get durations from a datetime, just use timeofday:
timeofday(datetime("now"))
ans = duration
21:39:59

Iniciar sesión para comentar.

Más respuestas (0)

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by