【问题标题】:R2016b problems - CELL2MAT does not support cell arrays containing cell arrays or objectsR2016b 问题 - CELL2MAT 不支持包含元胞​​数组或对象的元胞数组
【发布时间】:2017-03-15 03:53:51
【问题描述】:

首先,我在这个链接上放了一些股票数据

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

由代码sn-p的第一行加载来演示问题。

在 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 元胞数组,其中填充了在时间序列中正常工作的日期。

那么,假设有更好技能的人可以验证,那么解决这个问题的编码更改是什么?

提前致谢!

【问题讨论】:

    标签: matlab


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-28
      • 1970-01-01
      • 1970-01-01
      • 2011-07-17
      • 1970-01-01
      相关资源
      最近更新 更多