将日期从Excel转换为Matlab

时间:2015-06-22 12:06:25

标签: excel matlab date datetime

我有一系列日期和一些相应的值。 Excel中的数据格式为" Custom" postRequest(postString: String, postUrl: String, currentVC: UIViewController) { // implementation code } 。 当我尝试将此列转换为Matlab中的数组时,为了将其用作绘图的x轴,我使用:

dd/mm/yyyy hh:mm

但是我得到一个空字符串:0乘16。

因此,我无法使用函数a = datestr(xlsread('filename.xlsx',1,'A:A'), 'dd/mm/yyyy HH:MM'); 将其转换为日期数组。

我在哪里犯错?编辑:从hh:mm传递给HH:MM既不工作也不工作。当我只尝试

datenum

我得到:a = []

3 个答案:

答案 0 :(得分:1)

根据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')。

代码转换...

enter image description here

... to:

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

答案 1 :(得分:0)

需要使用大写M来调用分钟,以区分它们与月份。 使用a = datestr(xlsread(' filename.xlsx',1,' A:A'),' dd / mm / yyyy HH:MM')

编辑:更正了我的原始答案,我把所需的案例混淆了。

答案 2 :(得分:0)

我试过这个。它有效,但速度很慢,我无法在最后绘制日期。无论如何:

table= readtable ('filename.xlsx');
dates = table(:,1);
dates = table2array (dates);
dates = datenum(dates);
dates = datestr (dates);