使用datenum在matlab中将单元格转换为日期?

时间:2013-02-26 15:26:33

标签: matlab date type-conversion

我有一个矩阵,其中包含单元格结构中的日期。我设法使用datenum()转换日期(第2列),但我不确定如何添加时间(第3列)

数据如下所示:

  'IBM' 20090602    0   108.410000000000
  'IBM' 20090602    500 108.560000000000

我的代码:

date = datenum(num2str(IBM(:,2)),'yyyymmdd')

2 个答案:

答案 0 :(得分:1)

让我们先回顾一下你的错误:

  1. 您使用字符串datenum而不是实际数组提供'IBM(:, 2)'。丢弃报价。
  2. datenum接受字符串,而不接受数值。
  3. 一种可能的解决方案是将数据的第二列转换为字符串数组,并将其转换为datenum,如下所示:

    d = datenum(num2str(vertcat(IBM{:, 2})), 'yyyymmdd');
    

    请注意,如果日期字符串的格式在每行中都是固定的,那么这当然可能只有

    修改
    要将第三列中的值添加到datenum的结果中,只需执行以下操作:

    d + vertcat(IBM{:, 3})
    

    其中d是从datenum获取的日期值的列向量(我假设您要进行基本添加,因为您没有在第三个中指定timje值的实际含义列)。

    在一行中,完整的答案如下:

    datenum(num2str(vertcat(IBM{:, 2})), 'yyyymmdd') + vertcat(IBM{:, 3})
    

答案 1 :(得分:0)

您可以在转换为datenum时直接添加时间值。只需转换我假设的分钟数(如果它们在几秒钟内,将另一个* 60加到除数中)转换为几天,这就是MATLAB用于日期计算的时间。

timestamps = cellfun(@(x,y) datenum(num2str(x),'yyyymmdd')+y/(24*60),...
IBM(:,2),...
IBM(:,3),...
'UniformOutput',false)