Converting a string Array into a Char array

8 visualizzazioni (ultimi 30 giorni)
Leo Quintanar
Leo Quintanar il 17 Ago 2017
Commentato: per isakson il 20 Ago 2017
Hello I have an array of strings called time, they all have the format: 22:39:04.502727 hours:minutes:seconds and I want to convert all of them into a number where its minutes.seconds, so how would I do that?
  3 Commenti
Leo Quintanar
Leo Quintanar il 18 Ago 2017
I'm sorry my mind was moving faster than my typing, I have the a 200X1 cell called time which has the format 22:39:04.502727 and I have another 200X1 double called temp which has the format 26.404006797400000. I want to make a graph with time vs. temp. The way I wanted to do it was to convert the time array into an int array with just the minutes and seconds as a double array as in the example 39.04502727.
Walter Roberson
Walter Roberson il 18 Ago 2017
If you are using somwhere around R2015b-ish or later, then you can convert your times to datetime objects and use the datetime objects as your x coordinate, without needing to convert to integers.

Accedi per commentare.

Risposte (2)

Sean de Wolski
Sean de Wolski il 17 Ago 2017
Use datetime and then change the Format to that which you desire.
dt = datetime('22:39:04.502727','InputFormat','HH:mm:ss.SSSSSS')
dt.Format = 'mm:ss'
  1 Commento
Leo Quintanar
Leo Quintanar il 18 Ago 2017
Modificato: Walter Roberson il 18 Ago 2017
I tried that command with a little twist:
dt = datetime(time(1),'InputFormat','HH:mm:ss.SSSSS)
because I have a cell array called time that is 200X1 I can't seem to convert it into a string array maybe its the way I have the text file read into matlab. Here'es the code that reads the text file:
[date, time, temp ] = textread('C:\Users\Leo\Desktop\data.txt','%s %s %f', 200)
is there a way to still use your method on that 200X1 array. My intentions are to graph time vs. temp.

Accedi per commentare.


per isakson
per isakson il 19 Ago 2017
Modificato: per isakson il 19 Ago 2017
"My intentions are to graph time vs. temp."
[date, time, temp ] = textread('h:\m\cssm\data.txt','%s %s %f', 8 );
dt = datetime( time, 'InputFormat','HH:mm:ss.SSSSSS' );
sdn = datenum( time, 'HH:MM:SS.FFF' ); % the old way
plot( sdn, temp ), datetick
plot( dt, temp )
where data.txt contains
2017-08-19 22:39:04.502727 26.404006797400000
2017-08-19 22:40:04.502727 26.404006797400000
2017-08-19 22:41:04.502727 26.404006797400000
2017-08-19 22:42:04.502727 26.404006797400000
2017-08-19 22:43:04.502727 26.404006797400000
2017-08-19 22:44:04.502727 26.404006797400000
2017-08-19 22:45:04.502727 26.404006797400000
2017-08-19 22:56:04.502727 26.404006797400000
produces two identical(?) diagrams. I guess, there are rounding errors.
You didn't mean
plot( temp, dt )
  2 Commenti
Leo Quintanar
Leo Quintanar il 20 Ago 2017
Interesting when I use:
dt = datetime( time, 'InputFormat','HH:mm:ss.SSSSSS' );
I get this error: Undefined function 'datetime' for input arguments of type 'cell'. However, this way worked:
sdn = datenum( time, 'HH:MM:SS.FFF' ); % the old way
%
plot( sdn, temp ), datetick
per isakson
per isakson il 20 Ago 2017
I run this example on R2016a. Which release do you use? datetime was "Introduced in R2014b"

Accedi per commentare.

Categorie

Scopri di più su Dates and Time in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by