将混合表转换为数组Matlab

时间:2017-03-14 08:47:03

标签: arrays string matlab

我有一个表,它是使用readtable从excel读取的所有数字。有些数字来自撇号,例如“0.084”和“0.084”。这是因为excel表格在某些列中出现但在表格数据之外的字样很混乱。使用isstring返回0。 我的主要目标是将表格转换为3D数组(是否可以创建3D表格?)。如何转换显示为' x'数字,以便我可以建立我的3D数组(从这些表中的几个)。

例如,此表中的Var11是违规者之一: enter image description here

不同的表可能具有这些单元格的不同位置。  尝试将整个表转换为数组会出错:

 B = table2array(z);
Error using table2array (line 27)
Cannot concatenate the table variables 'Var3' and 'Var11', because
their types are double and cell.

1 个答案:

答案 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的零(双重类型)数组。