背景
对于某个工作簿,采用readtable函数进行读取,如下数据
需要读取的数据
读取要求是对于InitialValue列,读取出来的是doule形式,但有时候该列却读成cell形式,且cell形式里面还是char形式,即有可能读取成{‘311.3542’}这种形式
原因分析
对于InitialValue列所包含的数据,其被保存成文本样式(也就是左上角的绿色小三角),导致readtable函数有时是把E列2行读取成{‘311.3542’},有时候也读取成[311.3542],真是奇妙
解决办法
(1)需要对Excel中的InitialValue列,都转换成数字后(去掉绿色小三角),matlab读取时才会是double列;
(2)或者直接读取后,再增加判断函数,如果读取不是double列则进行处理;
代码优化
a=reattable(......) % 读取数据 if ~isempty(a) % 若数据不为空则进行优化 if iscell(a.InitialValue) == 1 & isa(a.InitialValue{1},'double') == 1 a.InitialValue = cell2mat(a.InitialValue); elseif iscell(a.InitialValue) == 1 & ischar(a.InitialValue{1}) == 1 a.InitialValue = cell2mat(cellfun(@(x)str2double(x),a.InitialValue,'Un',false)); end end