我有一个表,它是使用readtable从excel读取的所有数字。有些数字来自撇号,例如“0.084”和“0.084”。这是因为excel表格在某些列中出现但在表格数据之外的字样很混乱。使用isstring返回0。 我的主要目标是将表格转换为3D数组(是否可以创建3D表格?)。如何转换显示为' x'数字,以便我可以建立我的3D数组(从这些表中的几个)。
不同的表可能具有这些单元格的不同位置。 尝试将整个表转换为数组会出错:
B = table2array(z);
Error using table2array (line 27)
Cannot concatenate the table variables 'Var3' and 'Var11', because
their types are double and cell.
答案 0 :(得分:0)
ischar('0.084')
返回1,没有isstring。要从table
获取值,请使用单元格数组概念 - A {i,j}。大多数单元格东西都不会工作,你不能使用cellfun。所以我建议一个简单的双循环:
for i = 1 : N
for j = 1 : M
val = A{i,j};
if (ischar(val))
val = str2num(val);
end
M(i,j) = val;
end
end
可能有更优雅的解决方案。您可以在此处搜索:https://www.mathworks.com/help/matlab/matlab_prog/access-data-in-a-table.html
要进行转换,请使用str2num
。请注意,默认情况下,Matlab会对双打进行操作,您将获得双倍的结果。
3D阵列确实是可能的 - 例如,零(10,10,3)将创建10x10x3的零(双重类型)数组。