Time format conversion command
Mostrar comentarios más antiguos
This post is related to this thread:
If I want to convert
36:40.0
to
time in seconds, how do I do this?
2 comentarios
Matt Fig
el 16 de Oct. de 2012
What form is that? Is it a string and many in a character array or a cell array or what?
A = ['36:40.0';'36:41.0';'34:40.3']; % Like this?
A = {'36:40.0';'36:41.0';'34:40.3'}; % Like this?
Azzi Abdelmalek
el 16 de Oct. de 2012
are your data in a text file?
Respuesta aceptada
Más respuestas (1)
If you have a cell array, I would do this:
A = {'36:40.0';'36:40.1';'34:40.3'}; % A cell array
B = '${num2str(str2num($1)*60+str2num($2))}';
B = regexprep(A,'(\d+):(\d+\.\d*)',B)
If you have a character array, then:
A = ['36:40.0';'36:41.0';'34:40.3']; % A character array.
B = '${num2str(str2num($1)*60+str2num($2))}';
B = char(regexprep(cellstr(A),'(\d+):(\d+\.\d*)',B))
3 comentarios
I do not understand what you mean, "not CSV file has a time column like this."
If you read the file into a cell array or a character array, the corresponding code I gave you will convert it regardless of the range as long as it is MM:SS.F format (minutes:seconds.fraction)...
For example:
A = {'36:40.0','36:40.1','36:40.2','40:10.3','43:50.1'};
Now run the code I showed above in the first part.
B = '${num2str(str2num($1)*60+str2num($2))}';
B = regexprep(A,'(\d+):(\d+\.\d*)',B)
B =
'2200' '2200.1' '2200.2' '2410.3' '2630.1'
You seem to show where you converted to datenumbers using the DATENUM command. So why would it be surprising that you get datenumbers?
Show what this shows:
data{2}(1:3) % Or, what is in data{2}... strings?
If you don't see the strings in there, take the time to explore the data cell array before you run all these conversions on it. What is in data{1}? How about data{3}, etc...
Categorías
Más información sobre Dates and Time en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!