将Matlab时间戳数据转换为秒(HH:MM:SS:TTT - >秒)

时间:2014-10-13 14:39:00

标签: matlab time

我在Matlab中的数据(单元格)如下所示:

00.00.00.515
00.00.00.671
00.00.00.828
00.00.00.984
00.00.01.140
etc.

这是时间戳:HH:MM:SS:TTT,T代表千分之一(=毫秒)。毫秒很重要,因为步长很小。如何将此数据(单元格)转换为数据Matlab可以处理(双重)? 所以数据如下:

0.515
0.671
0.828
0.984
1.140
etc.

应将分钟和小时转换为秒,以便轻松计算数据的总时间或平均步长。所以:

01.30.00.000    

将是:

5400.000

谢谢!

1 个答案:

答案 0 :(得分:4)

假设您的单元格数组包含字符串:

ts = {'00.00.00.515'
      '00.00.00.671'
      '00.00.00.828'
      '00.00.00.984'
      '00.00.01.140'};

可以按如下方式完成:

>> cell2mat(cellfun(@(c) sscanf(c,'%d.%d.%f').', ts, 'uniformout', 0)) * [3600 60 1].'
ans =
    0.5150
    0.6710
    0.8280
    0.9840
    1.1400

这使用cellfun将每个单元格转换为sscanf的数字行向量,然后将所有这些vectos连接成一个cell2mat的矩阵;并且fianlly应用矩阵乘法来计算时间。

如果数字位数不固定,代码也可以使用。例如:

>> ts = {'0.1.00.51'};
>> cell2mat(cellfun(@(c) sscanf(c,'%d.%d.%f').', ts, 'uniformout', 0)) * [3600 60 1].'
ans =
   60.5100