matlab中的时间格式化

time formatting in matlab

我有如下所示的每分钟时间序列。格式类似于“"hh:mm"”,如下所示

'"8:59"' '"9:00"' '“9:01”' '“9:02”' '“9:03”' '“9:04”' '“9:05”' '“9:06”' '“9:07”'

是否可以在 matlab 中将这些更改为 hhmm 格式,例如 859 900 901 902 t0 a double 格式。

到字符串

 strjoin(strsplit(s, ':'),'')

加倍

 str2num(strjoin(strsplit(s, ':'),''))

如果您有这些引号 "" 并想删除它们,请在此处使用它

 str2num(strjoin(strsplit(s(3:end-2), ':'),''))

您可以使用 strrep or regexprep 之类的函数来删除字符串中的冒号。例如:

t = {'"8:59"', '"9:00"', '"9:01"', '"9:02"'};
newt = strrep(t, ':', '');
newt = strrep(newt, '"', '');
newt = strrep(newt, ''', '');

或者有点奇怪的 regexprep 调用:

newt = regexprep(t, '[''''"'':]', '');

Returns

newt = 

    '859'    '900'    '901'    '902'

然后您可以将其与 str2double 一起使用来生成双精度向量:

tdouble = str2double(newt);

哪个returns:

tdouble =

   859   900   901   902

我还建议您看一下 datenum and datestr,它们是用于处理序列日期值的 MATLAB 内置函数。例如:

tother = datenum(t, 'HH:MM');

Returns:

tother =

   1.0e+05 *

    7.3597
    7.3597
    7.3597
    7.3597

然后返回:

totherstr = datestr(tother, 'HH:MM');

哪个returns:

totherstr =

08:59
09:00
09:01
09:02