我有一个矩阵,其中包含单元格结构中的日期。我设法使用datenum()转换日期(第2列),但我不确定如何添加时间(第3列)
数据如下所示:
'IBM' 20090602 0 108.410000000000
'IBM' 20090602 500 108.560000000000
我的代码:
date = datenum(num2str(IBM(:,2)),'yyyymmdd')
答案 0 :(得分:1)
让我们先回顾一下你的错误:
datenum
而不是实际数组提供'IBM(:, 2)'
。丢弃报价。datenum
接受字符串,而不接受数值。一种可能的解决方案是将数据的第二列转换为字符串数组,并将其转换为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)