Arrays 用Matlab实现混合表到数组的转换
我有一个表格,所有数字都是使用readtable从excel中读取的。有些数字在省略号内出现,如“0.084”等。这是因为excel表格混乱,某些列中出现了单词,但表格数据之外出现了单词。使用isstring返回0。 我的主要目标是将表格转换为3D阵列(是否可以创建3D表格?)。如何将显示为“x”的单元格转换为数字,以便构建3D阵列(从这些表格中的几个) 例如,本表中的Var11是违规者之一: 对于这些单元格,不同的表可能有不同的位置。 尝试将整个表转换为数组时出错:Arrays 用Matlab实现混合表到数组的转换,arrays,string,matlab,Arrays,String,Matlab,我有一个表格,所有数字都是使用readtable从excel中读取的。有些数字在省略号内出现,如“0.084”等。这是因为excel表格混乱,某些列中出现了单词,但表格数据之外出现了单词。使用isstring返回0。 我的主要目标是将表格转换为3D阵列(是否可以创建3D表格?)。如何将显示为“x”的单元格转换为数字,以便构建3D阵列(从这些表格中的几个) 例如,本表中的Var11是违规者之一: 对于这些单元格,不同的表可能有不同的位置。 尝试将整个表转换为数组时出错: B = table2a
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工作区导入的表的屏幕截图,或粘贴数据的一小部分,以便我们更好地理解。