【问题标题】:How do I see the data type for each of my table's columns如何查看表中每个列的数据类型
【发布时间】:2015-08-07 00:36:50
【问题描述】:

例如:

>> temp = table([1; 2], {'a'; 'b'});

temp = 

    Var1    Var2
    ____    ____

    1       'a' 
    2       'b' 

有没有办法找出这张表每一列的数据类型?我使用数组创建第一列和使用元胞数组创建第二列对数据类型也有影响吗?

编辑:我实际上正在寻找一个可以接受temp 作为输入并返回某种包含列类型的数组的函数,例如:

>> columnType(temp)

ans = {'double' 'cell'}

虽然很高兴知道class(temp.Var1)返回temp的第一列的列类型,但是当表有很多列时就变得乏味了。

【问题讨论】:

    标签: matlab types


    【解决方案1】:

    当然。对每个表变量使用class 来查看它们的样子:

    >> temp = table([1; 2], {'a'; 'b'})
    
    temp = 
    
        Var1    Var2
        ____    ____
    
        1       'a' 
        2       'b' 
    
    >> class(temp.Var1)
    
    ans =
    
    double
    
    >> class(temp.Var2)
    
    ans =
    
    cell
    

    第二种数据类型是有意义的,因为cell 数组被设计为可以在每个槽中存储任何类型的容器。你会认为你会得到char,因为你的单元格数组中的每个元素都是char 类型,但更大的图景是你使用cell 数组来初始化第二列。

    如果您决定使用纯字符,特别是删除 {} 大括号,我们会得到:

    >> temp = table([1; 2], ['a';'b'])
    
    temp = 
    
        Var1    Var2
        ____    ____
    
        1       a   
        2       b   
    
    >> class(temp.Var1)
    
    ans =
    
    double
    
    >> class(temp.Var2)
    
    ans =
    
    char
    

    要回答您的第二个问题,不,每列中的数据类型无关紧要......只要每列具有相同的数据类型。您可以在一列中包含字符,在另一列中包含双精度字符,在另一列中包含元胞数组,在另一列中包含 uint8s,依此类推。


    如果您想自动执行此操作而不是手动检查每个变量的类,请使用 varfun 并将函数应用于表中的每个变量:

    >> varfun(@class, temp, 'OutputFormat', 'cell')
    
    ans = 
    
        'double'    'cell'
    

    【讨论】:

    • 感谢您的回答。我已经编辑了我的问题,因为我不想手动检查每一列。您是否建议将class 函数传递给某种cellfun 函数?
    • 我还有一个问题。所以我们确定我的temp.Var2 是一个单元格。然而,当我在 matlab 命令窗口中键入 temp.Var2 时,它会返回一个看起来像数组的 ans。为什么会发生这种情况?
    • @Alex - 这就是 MATLAB 显示变量的方式。看看你的工作区,你自己看看它是一个单元格。
    • 如果您还有任何问题,请告诉我...感谢您的接受!
    猜你喜欢
    • 2019-09-15
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多