我有一系列日期和一些相应的值。 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 = []
答案 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'
)。
代码转换...
... 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);