R2016b问题 - CELL2MAT不支持包含单元格数组或对象的单元数组

时间:2016-11-01 22:40:06

标签: matlab

首先,我已在此链接中放置了一些股票数据

https://drive.google.com/open?id=0B9hoshsWoDHGOGs1SGFDTG9BYlk

由代码段中的第1行加载以演示问题。

在R2016a及更早版本中运行但在R2016b中失败的代码在此处:

FileName = '~/TestFile.csv';

tmpData = readtable(FileName);
Data = tmpData(:,3:size(tmpData, 2));
names = fieldnames(Data);

DataArray=table2array(Data);

DateCell = table2cell(tmpData(:,1));

count = size(Data, 2);

for i=1:count
    tmpStr = char(names(i));
%        fprintf('%s\n', tmpStr);
    TS(i) = timeseries(DataArray(:,i), DateCell, 'Name', tmpStr);
end

在R2016b中,DateCell变量似乎是一个1091个单元格数组,其中包含' 1x1 datetime'导致调用时间序列失败的元素。在Matlab的所有早期版本中,它似乎是一个1091单元阵列,其中填充了在时间序列中正常工作的日期。

因此,假设拥有更好技能的人可以验证更多,那么编码的变化是什么来解决这个问题?

提前致谢!

1 个答案:

答案 0 :(得分:1)

您可以通过将'DatetimeType'参数添加到readtable来取回R2016a及之前的行为,如下所示:

tmpData = readtable(FileName, 'DatetimeType', 'text')

release notes中提到了这种不兼容性。