Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 用Matlab实现混合表到数组的转换_Arrays_String_Matlab - Fatal编程技术网

Arrays 用Matlab实现混合表到数组的转换

Arrays 用Matlab实现混合表到数组的转换,arrays,string,matlab,Arrays,String,Matlab,我有一个表格,所有数字都是使用readtable从excel中读取的。有些数字在省略号内出现,如“0.084”等。这是因为excel表格混乱,某些列中出现了单词,但表格数据之外出现了单词。使用isstring返回0。 我的主要目标是将表格转换为3D阵列(是否可以创建3D表格?)。如何将显示为“x”的单元格转换为数字,以便构建3D阵列(从这些表格中的几个) 例如,本表中的Var11是违规者之一: 对于这些单元格,不同的表可能有不同的位置。 尝试将整个表转换为数组时出错: B = table2a

我有一个表格,所有数字都是使用readtable从excel中读取的。有些数字在省略号内出现,如“0.084”等。这是因为excel表格混乱,某些列中出现了单词,但表格数据之外出现了单词。使用isstring返回0。 我的主要目标是将表格转换为3D阵列(是否可以创建3D表格?)。如何将显示为“x”的单元格转换为数字,以便构建3D阵列(从这些表格中的几个)

例如,本表中的Var11是违规者之一:

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

 B = table2array(z);
Error using table2array (line 27)
Cannot concatenate the table variables 'Var3' and 'Var11', because
their types are double and cell.
ischar('0.084')
返回1,并且没有isstring。要从
中获取值,可以使用单元数组概念-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
可能有一个更优雅的解决方案。您可以在此处搜索:

要转换,请使用str2num。请注意,默认情况下,Matlab对double进行操作,您将得到double


3D阵列确实是可能的-例如,零(10,10,3)将创建10x10x3的零阵列(双类型)。

谢谢。如果我的表是“z”,那么ischar(z(1,9)),对于一个有问题的单元格,返回0而不是1。因此,我很难将整个表转换为数组,因为我无法确定一种类型和另一种类型。谁能告诉我
z
?牢房?如果是cell,那么应该使用
cellfun(…)
同时对多个数据元素进行操作。或者使用z{1,9}获取单元格内的值(本例中为字符串)。在本例中,您可以使用ischar(z{1,9}),就像它是cell一样(但它不是!这将起作用,大多数cell内容都不起作用)。所以,要解决这个问题,应该使用双循环遍历表中的所有元素,并根据需要将它们转换为数字。因此无法将其与其他表区分开来。请显示从Matlab工作区导入的表的屏幕截图,或粘贴数据的一小部分,以便我们更好地理解。