用Matlab实现时间戳的datenum
我编写以下代码用于计算datenum值:用Matlab实现时间戳的datenum,matlab,timestamp,Matlab,Timestamp,我编写以下代码用于计算datenum值: Test_table = table2dataset(Test_table); t1 = Test_table (:,3); c1 =dataset2cell(t1); C1 = strrep(c1(2:end), '"', ''); formatIn = 'yyyy-mm-dd HH:MM:SS.FFF'; T1= datenum(C1(1:end),formatIn
Test_table = table2dataset(Test_table);
t1 = Test_table (:,3);
c1 =dataset2cell(t1);
C1 = strrep(c1(2:end), '"', '');
formatIn = 'yyyy-mm-dd HH:MM:SS.FFF';
T1= datenum(C1(1:end),formatIn);
我有表格式的数据,这些数据被转换成数据集,然后从那里我以单元格数组的形式提取时间戳。但是当我运行代码时,我得到了以下错误:
DATENUM的输入不是字符向量数组
单元格数组格式的整个时间戳(t1
)都上载到此站点:但仍然收到一个错误,“使用strrep时出错”
单元格元素必须是字符向量。“。这里怎么了
解决方案:
经过一天的努力,我终于解决了这个问题。实际上,我得到的错误是因为我有以下格式的数据集[1x1 string]
,这是错误的,因此我的代码出现了错误。所以为了解决这个问题,我使用了cellstr
函数将我的整个数据集转换成cell。因此现在开始工作。所以正确的代码应该是这样的
t1 = table2dataset(:,3);
C1 = cellstr(t1);
d1 = strrep(C1, '"', '');
formatIn = 'yyyy-mm-dd HH:MM:SS.FFF';
t1 = datenum(d1, formatIn);
希望这对未来的游客有所帮助 好的,您有以下单元格数组:
t1 = {'"2009-04-13 04:20:00.000"'
'"2009-04-13 04:30:00.000"'
'"2009-04-13 04:40:00.000"'
'"2009-04-13 04:50:00.000"'
'"2009-04-13 05:00:00.000"'
'"2009-04-13 05:10:00.000"'
'"2009-04-13 09:40:00.000"'
'"2009-04-13 09:50:00.000"'
'"2009-04-13 10:00:00.000"'
'"2009-04-13 10:10:00.000"'}
每个日期都是一个字符串,因为它被单引号”
包围,并且由于数据提取,每个日期都包含双引号。要从整个单元格数组中删除双引号,请将其替换为空字符串'
(这是两个单引号,中间没有空格)。使用
然后您可以将其传递给datevec
或datenum
formatIn = 'yyyy-mm-dd HH:MM:SS.FFF';
T1 = datevec(c1, formatIn);
% year month day hour minutes seconds
%T1=[2009 4 13 4 20 0
% 2009 4 13 4 30 0
% 2009 4 13 4 40 0
% 2009 4 13 4 50 0
% 2009 4 13 5 0 0
% 2009 4 13 5 10 0
% 2009 4 13 9 40 0
% 2009 4 13 9 50 0
% 2009 4 13 10 0 0
% 2009 4 13 10 10 0]
如果要提供矩阵作为输入,则不能根据指定指定
格式。请尝试T1=datenum(c1)
。输入格式应自动确定。这也不起作用。我得到以下错误“DATEVEC的输入不是一个字符向量数组”,我注意到时间戳中有双引号,但在matlab示例中应该是单引号。那么我们如何将双引号替换为单引号呢?单引号表示它是一个字符串,在日期范围内没有引号。如果字符串包含双引号,请使用c1=strep(c1,“,”)删除它们
中间的参数是围绕双引号的单引号,最后一个参数只是两个单引号。是的,我也在考虑同样的问题。但是我如何从整个c值中删除双引号,因为它只显示一个值。我有时间戳,比如说500个值。我如何将整个值转换为单引号使用上述函数进行报价?谢谢。但正如我所说,我输入了带有双引号的时间戳。在您的编码中,您添加了单引号和双引号。对于这些小样本来说,这非常简单。但是我有800个值的单元格数组的时间戳。如何将单引号添加到整个值中?这是t我现在面临的问题我没有将单引号添加到字符串中,我添加它是为了使其成为字符串。单引号不在字符串中!如果您有单元格数组,其中的项必须具有格式。请将我的示例t1
创建复制到您的Matlab中,然后在工作区中查看t1
,您将看不到任何引用。你尝试过该方法的其余部分吗?你的示例运行得很好。但当我尝试对我的全部数据执行相同操作时,这会给我带来错误。我修改了代码,并对我为什么会出现此错误给出了更多解释。请再次研究这个问题,你是如何解决的?问题是什么?如果我的答案正确的话ped,那么请接受它。如果你认为它对其他人有帮助,请随时发布你自己的答案。我正在制作
formatIn = 'yyyy-mm-dd HH:MM:SS.FFF';
T1 = datevec(c1, formatIn);
% year month day hour minutes seconds
%T1=[2009 4 13 4 20 0
% 2009 4 13 4 30 0
% 2009 4 13 4 40 0
% 2009 4 13 4 50 0
% 2009 4 13 5 0 0
% 2009 4 13 5 10 0
% 2009 4 13 9 40 0
% 2009 4 13 9 50 0
% 2009 4 13 10 0 0
% 2009 4 13 10 10 0]