我正在尝试阅读Excel表格。 在同一台计算机上,我有不同的结果。如何将日期时间视为日期而不是字符串?
我知道我可以稍后更改它,但我需要为Octave和Matlab提供相同的代码。
Matlab的:
[data,header, raw]=xlsread('Mappe1.xlsx');
data =
0 -0.1843 -0.1445
0 -0.1845 -0.1455
0 -0.1833 -0.1461
0 -0.1819 -0.1466
header =
'Stamp' 'R1.1' 'R2.1' 'R2.2'
'24.11.2017 09:41:25' '' '' ''
'24.11.2017 05:41:23' '' '' ''
'24.11.2017 01:41:21' '' '' ''
'23.11.2017 21:41:19' '' '' ''
Octave:
data =
4.3063e+004 0.0000e+000 -1.8434e-001 -1.4451e-001
4.3063e+004 0.0000e+000 -1.8445e-001 -1.4551e-001
4.3063e+004 0.0000e+000 -1.8328e-001 -1.4611e-001
4.3063e+004 0.0000e+000 -1.8186e-001 -1.4661e-001
4.3063e+004 0.0000e+000 -1.8071e-001 -1.4493e-001
4.3063e+004 0.0000e+000 -1.8192e-001 -1.4123e-001
4.3062e+004 0.0000e+000 -1.8348e-001 -1.4165e-001
4.3062e+004 0.0000e+000 -1.8358e-001 -1.4219e-001
4.3062e+004 0.0000e+000 -1.8342e-001 -1.4284e-001
header =
{
[1,1] = Stamp
[1,2] = R1.1
[1,3] = R2.1
[1,4] = R2.2
}
答案 0 :(得分:2)
确保您的Excel数据在Excel中格式化为日期,然后使用“基本”模式从MATLAB加载:
[data,header,raw]=xlsread('Mappe1.xlsx','','','basic');
首先,您在上面显示的数据会将您的日期格式设为24.11.2017 09:41:25
。点分隔符看起来并不标准,这让我想知道它们是如何存储在Excel中的。我会使用像2017-11-24 09:41:25
这样的标准格式,并确保Excel将它们识别为日期/时间。 (有关MATLAB喜欢的格式,请参阅here。)
执行上述操作后,我能够在MATLAB中读取与您请求的数值相同的数值。使用基本模式将在日期中读取Excel序列号(不是MATLAB datenums),如文档here所示。
如果不使用“基本”模式,则MATLAB行为取决于计算机上安装的Excel版本(我们不知道)。我不知道Octave在这种情况下是如何工作的。
最后,在简单的情况下(甚至根本不可能),编写在MATLAB和Octave中都有效的代码可能是不可能的。你必须准备好通过箍来实现这一目标。另外我并不认为这在Octave中会起作用,因为我没有测试Octave!