MATLAB xlsread函数导入date

感谢您看看我的问题。

我有一个奇怪的问题,导入一个xlsx文件到MATLAB R2016a(Mac OS X),更具体地说是导入date。

我正在使用下面的代码从xlsx文件“bank_statements.xlsx”的工作表“过去”中导入我的银行对帐单历史logging。 还包括date为dd / mm / yyyy格式的第1列的片段。

[ndata, text, data] = xlsread('bank_statements.xlsx','Past'); 

第1列的日期为dd / mm / yyyy格式

我的理解是,MATLAB使用filter来区分文本和数字数据,分别用“text”和“data”数组表示,而“ndata”是包含所有内容的单元格数组。 以前,在MATLAB 2015a(Windows)上运行脚本时,第1列中的date被视为string,并填充到“文本”数组中,而在文本数组的第1列的MATLAB 2016a(Mac OS X)中则为空白。 我以为这是因为xlsread函数如何解释date信息的更新。

这是奇怪的部分。 在通过“variables”窗口检查文本数组并在“命令窗口”中引用显示文本(2,1)为空的情况下,在此“空”单元格上执行datenum函数成功地给出了date的编号格式:

在这里输入图像说明

虽然我可以通过使用ndata数组来解决这个问题(或者忽略了上述对我没有意义的事实),但是我真的很想了解这里正在发生的事情,而看起来空的单元格实际上可以保存信息操作可以在上面执行。

最好的祝福,

吉姆

我能够复制你的问题,虽然我无法回答所发生的事情的复杂性,但我可以提出一个build议。 当我转换一串非date文本时,我只能复制它,这导致我相信数据导入方式可能存在问题。

代替:

 [ndata,text,data] = xlsread('bank_statements.xlsx','Past'); 

也许可以尝试添加@convertSpreadsheetDates函数(如果有),以及要导入的值的范围,即

 [ndata,text,data] = xlsread('bank_statements.xlsx','Past','A2:A100','',@convertSpreadsheetDates); 

可能不是你在找什么,但它可能有帮助!