在matlab表中查找行

时间:2015-07-31 13:28:18

标签: matlab slice

我是Matlab的新手,抱歉这个非常简单的问题。给出一张表:

>> T = table(['MALE';'MALE';'FEMA';'FEMA';'FEMA'],[38;43;38;40;49],[71;69;64;67;64],[176;163;131;133;119])

T = 

    Var1    Var2    Var3    Var4
    ____    ____    ____    ____

    MALE    38      71      176 
    MALE    43      69      163 
    FEMA    38      64      131 
    FEMA    40      67      133 
    FEMA    49      64      119 

如何才能访问仅包含'FEMA'的行?

Naively ,我会写为:

>> T(T.Var1 == 'FEMA',:)

获取

ans = 

Var1    Var2    Var3    Var4
____    ____    ____    ____

FEMA    38      64      131 
FEMA    40      67      133 
FEMA    49      64      119

2 个答案:

答案 0 :(得分:4)

您可以使用ismember执行此操作:

T(ismember(T.Var1,'FEMA','rows'),:)

仅供参考,您可以将Var1声明为单元格数组,而不是强制元素具有相同数量的字符:

T = table({'MALE';'MALE';'FEMALE';'FEMALE';'FEMALE'},[38;43;38;40;49],[71;69;64;67;64],[176;163;131;133;119])

然后您可以删除'rows'参数

T(ismember(T.Var1,'FEMALE'),:)

答案 1 :(得分:4)

T2 = T(T.Var1=='F',:)

我认为你已经看过了帮助,但基本上这是因为它是一个不是char的单元格。 http://www.mathworks.com/help/matlab/matlab_prog/access-data-in-a-table.html

因此,如果您想匹配完整字符串,请使用字符串comp

T2 = T(strcmp(T.Var1, {'FEMA'}),:)