【问题标题】:Detect cell entries in MATLAB Table检测 MATLAB 表中的单元格条目
【发布时间】:2015-05-11 19:40:20
【问题描述】:

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

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

如您所见,有些列是双列,有些是单元格。

我正在尝试找出哪些是细胞。

由于某种原因,我没有可以使用的A.Properties.class,而且我似乎无法在上面调用iscell

执行此操作的“Matlab”方式是什么?我是否必须遍历表格的每一列才能确定其类别?

【问题讨论】:

    标签: matlab cell-array


    【解决方案1】:

    一种方法 -

    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
    

    运行 #2 -

    >> A=table([1;2;3],{'A';'B';'C'})
    A = 
        Var1    Var2
        ____    ____
        1       'A' 
        2       'B' 
        3       'C' 
    out =
         0     1
    

    运行 #3 -

    >> 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
    

    【讨论】:

    • 整个第 2 列不是 3x1 单元格吗?碰巧 3x1 单元格的元素之一是双精度数。 OP 的问题是关于识别哪些列是单元格?
    • A=table([1;2;3],{4;5;6})的测试用例呢
    • @hiandbaii 嗯,你说得对,这也要考虑!
    • 是的。这正是我一直在寻找的。天才。
    【解决方案2】:

    如果第二个变量是单元格类型,您可以使用iscell(A.Var2) 进行测试。更一般地说,您可以通过索引引用列:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-17
      • 2018-10-17
      • 1970-01-01
      • 1970-01-01
      • 2013-05-04
      • 1970-01-01
      • 1970-01-01
      • 2014-05-16
      相关资源
      最近更新 更多