0

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

数据如下所示:

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

我的代码:

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

2 回答 2

1

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

  1. datenum用字符串'IBM(:, 2)'而不是实际的数组来提供。丢弃引号。
  2. datenum接受字符串,而不是数值。

一种可能的解决方案是将数据的第二列转换为字符串数组,并将其输入datenum,如下所示:

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

请注意,当然,这只有在每一行中日期字符串的格式是固定的情况下才有可能。

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

d + vertcat(IBM{:, 3})

whered是从中获得的日期值的列向量datenum(我假设您想做基本的加法,因为您没有在第三列中指定 timje 值的实际含义)。

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

datenum(num2str(vertcat(IBM{:, 2})), 'yyyymmdd') + vertcat(IBM{:, 3})
于 2013-02-26T15:33:45.280 回答
0

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

timestamps = cellfun(@(x,y) datenum(num2str(x),'yyyymmdd')+y/(24*60),...
IBM(:,2),...
IBM(:,3),...
'UniformOutput',false)
于 2013-02-26T16:19:35.733 回答