【MATLAB】關于使用readtable函數(shù)讀取異常的問題處理
背景
對于某個工作簿,采用readtable函數(shù)進行讀取,如下數(shù)據

讀取要求是對于InitialValue列,讀取出來的是doule形式,但有時候該列卻讀成cell形式,且cell形式里面還是char形式,即有可能讀取成{‘311.3542’}這種形式
原因分析
對于InitialValue列所包含的數(shù)據,其被保存成文本樣式(也就是左上角的綠色小三角),導致readtable函數(shù)有時是把E列2行讀取成{‘311.3542’},有時候也讀取成[311.3542],真是奇妙
解決辦法
(1)需要對Excel中的InitialValue列,都轉換成數(shù)字后(去掉綠色小三角),matlab讀取時才會是double列;
(2)或者直接讀取后,再增加判斷函數(shù),如果讀取不是double列則進行處理;
代碼優(yōu)化
a=reattable(......) % 讀取數(shù)據
if ~isempty(a) % 若數(shù)據不為空則進行優(yōu)化
? ?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
標簽: