Reading cell array from excel table, which contains different sizes of doubles

1 次查看(过去 30 天)
I would like to read these columns as cell arrays, where the components are doubles, such as the following:
m_con = {[1,2,3],2,3};
I have tried xlsread but it didn't work.

采纳的回答

Adam Danz
Adam Danz 2021-1-12
编辑:Adam Danz 2021-1-12
There might be a smoother method but this works with the data from your image.
file = 'Book1.xlsx';
opts = detectImportOptions(file);
opts = setvartype(opts, 'char');
C = readcell(file,opts); % you can also try readtable()
numIdx = cellfun(@isnumeric,C);
C(numIdx) = cellfun(@num2str,C(numIdx),'UniformOutput',false);
Cnum = cellfun(@str2num,C,'UniformOutput',false)
Cnum =
3×4 cell array
{1×3 double} {1×3 double} {[ 1]} {[ 1]}
{[ 2]} {[ 2]} {1×2 double} {1×2 double}
{[ 3]} {[ 2]} {1×2 double} {1×2 double}
Cnum{1,1}
ans =
1 2 3
  8 个评论
Ege Arsan
Ege Arsan 2021-1-12
I have one last quastion. I tried to combine these two with an if condition but i still get en error. Do you know a better expression or is it completely false waht i did?
if ~isnumeric(C)
numIdx = cellfun(@isnumeric,C);
C(numIdx) = cellfun(@num2str,C(numIdx),'UniformOutput',false);
Cnum = cellfun(@str2num,C,'UniformOutput',false);
elseif ~ischar(C)
charIdx = cellfun(@ischar,C);
Cnum(charIdx) = cellfun(@str2num,C(charIdx),'UniformOutput',false);
end

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Data Import from MATLAB 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by