我有一个包含单元格结构中日期的矩阵。我设法使用 datenum() 转换日期(第 2 列),但我不确定如何添加时间(第 3 列)
数据如下所示:
'IBM' 20090602 0 108.410000000000
'IBM' 20090602 500 108.560000000000
我的代码:
date = datenum(num2str(IBM(:,2)),'yyyymmdd')
我有一个包含单元格结构中日期的矩阵。我设法使用 datenum() 转换日期(第 2 列),但我不确定如何添加时间(第 3 列)
数据如下所示:
'IBM' 20090602 0 108.410000000000
'IBM' 20090602 500 108.560000000000
我的代码:
date = datenum(num2str(IBM(:,2)),'yyyymmdd')
让我们先回顾一下你的错误:
datenum
用字符串'IBM(:, 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})
您可以在转换为 datenum 时直接添加时间值。只需从我假设的分钟(如果它们以秒为单位,将另一个 *60 添加到除数)转换为天,这是 MATLAB 用于其 datenum 计算的。
timestamps = cellfun(@(x,y) datenum(num2str(x),'yyyymmdd')+y/(24*60),...
IBM(:,2),...
IBM(:,3),...
'UniformOutput',false)