在MATLAB表中检测单元格输入

3

我有一个Matlab表格(新的“Table”类),我们称之为A

A=table([1;2;3],{'A';'B';'C'})

正如你所见,有些列是双倍的,有些是单元格。

我正在试图找出哪些是单元格。

由于某种原因,我无法使用 A.Properties.class,并且似乎无法调用 iscell

这个问题在"Matlab"中应该怎么解决?难道我必须循环遍历表的每一列以确定其类别吗?

2个回答

3

一种方法:

out = cellfun(@(x) iscell(getfield(A,x)),A.Properties.VariableNames)

或者,更好的方法是像这样动态访问字段(变量)-

out = cellfun(@(x) iscell(A.(x)), A.Properties.VariableNames)

样例运行:
运行 #1 -
A=table([1;2;3],{4;5;6})
A = 
    Var1    Var2
    ____    ____
    1       [4] 
    2       [5] 
    3       [6] 
out =
     0     1

第二次运行 -
>> A=table([1;2;3],{'A';'B';'C'})
A = 
    Var1    Var2
    ____    ____
    1       'A' 
    2       'B' 
    3       'C' 
out =
     0     1

第三次运行 -
>> A=table([1;2;3],{4;5;6},{[99];'a';'b'},{'m';'n';'p'})
A = 
    Var1    Var2    Var3    Var4
    ____    ____    ____    ____
    1       [4]     [99]    'm' 
    2       [5]     'a'     'n' 
    3       [6]     'b'     'p' 
>> out
out =
     0     1     1     1

第二列不是一个3x1的单元格吗?只是碰巧3x1单元格中的一个元素是double类型的。OP的问题是关于如何识别哪些列是单元格吗? - hiandbaii
A=table([1;2;3],{4;5;6})的测试用例怎么样? - hiandbaii
@hiandbaii 哦,你说得对,这也必须考虑到! - Divakar
是的。这正是我在寻找的。天才。 - Alec

0

您可以使用iscell(A.Var2)测试第二个变量是否为单元格类型。更一般地,您可以通过它们的索引引用列:

for k = 1 : width(A)
    disp(iscell(A.(k)))
end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接