2012-07-26 110 views
1

可能重复:
Counting values by day/hour with timeseries in MATLAB格式化字符数组

这是一个基本的问题,但我不能找到它:

我有一个3000x25字符数组:

2000-01-01T00:01:01+00:00
2000-01-01T00:01:02+00:00
2000-01-01T00:01:03+00:00
2000-01-01T00:01:04+00:00

这些显然倍。我想将数组重新格式化为3000x1数组。我怎样才能重新定义每一行是一个数组中的一个条目?

(再次,这是简单的,我很抱歉)

回答

1

你需要指定一个格式为数组和饲料它datenum,像这样:现在

>> d = datenum(c,'YYYY-MM-DDTHH:mm:ss') 
d = 
    1.0e+005 * 
    7.3487 
    7.3487 
    7.3487 
    7.3487 

的时间存储作为datenums,即作为浮点数,表示自Matlab开始以来经过的天数。如果您想将这些转换为代表经过一天的级分数,你可以做

>> t = d - fix(d); 

,如果你想自午夜起的秒数,你可以做得比转换

>> t = 86400 * (d - fix(d)); 
t = 
    61.0000 
    62.0000 
    63.0000 
    64.0000 
+0

感谢您的回应,但我不明白这种方法:如果我想每天创建一系列事件,是不是每天都要创建一个新的函数?我想要的是:“第一天:85”
“第二天:43” – ehertele 2012-07-26 18:53:36

+0

@ehertele:我不确定我明白了目标是什么。 DATENUM将字符串日期转换为表示时间戳的数字,以某个参考点的天数为单位表示。你总是可以使用等效的DATESTR函数返回到日期的字符串表示 – Amro 2012-07-26 19:03:04

+0

(对不起,如果我不跟踪某事) 我有一个时间戳数组是事件。如果我将它们转换为序列号,那么您如何按日期分类事件,以便知道每天(或每小时)会发生多少事件?到目前为止,我看到你将如何计算两个序列号之间的事件,但这对于这样一个大型阵列来说是不合理的。 这就是我所说的“date1:​​38”/“date2:23”/等 – ehertele 2012-07-26 19:13:42

3

其他为其他显示序列日期数字,我觉得你只是想转换为字符串的单元阵列:

A = cellstr(c) 

其中c是字符3000x25矩阵。

+0

谢谢,这就是我一直在寻找。我仍然不确定序列日期会如何达到我想要做的。 (请参阅下面的评论)。 – ehertele 2012-07-26 18:56:52