我有一系列日期和一些相应的值。 Excel 中的数据格式为“自定义”dd/mm/yyyy hh:mm
.
当我尝试在 Matlab 中将此列转换为数组时,为了将其用作绘图的 x 轴,我使用:
a = datestr(xlsread('filename.xlsx',1,'A:A'), 'dd/mm/yyyy HH:MM');
但我得到一个空字符串:0×16。
因此,我无法使用函数
datenum
将其转换为日期数组。 .我在哪里犯错?编辑:从 hh:mm 传递到 HH:MM 也不起作用。当我只尝试
a = xlsread('filename.xlsx',1,'A2')
我得到:a = []
最佳答案
根据documentation of datestr
分钟、月份和小时的语法如下:
HH -> Hour in two digits
MM -> Minute in two digits
mm -> Month in two digits
因此,您必须更改
datestr
调用中的语法。 .因为 Excel 和 Matlab 的序列号格式不同,所以要加上 693960
的偏移量从 xlsread
检索到的号码.dateval = xlsread('test.xls',1,'A:A') + 693960;
datestring = datestr(dateval, 'dd/mm/yyyy HH:MM');
这将读取 Excel 文件中第一张工作表 (
A
) 的第一列 ( 1
)。为了获得更好的性能,您可以明确指定范围(例如 'A1:A20'
)。代码转换...
... 至:
datestring =
22/06/2015 16:00
编辑:以下代码应适用于您提供的 Excel 文件:
% read from file
tbl = readtable('data.xls','ReadVariableNames',false);
dateval = tbl.(1);
dateval = dateval + 693960;
datestring = datestr(dateval)
% plot with dateticks as x-axis
plot(dateval,tbl.(2))
datetick('x','mmm/yy')
%datetick('x','dd/mmm/yy') % this is maybe better than only the months
关于excel - 将日期从 Excel 转换为 Matlab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30979591/