我认为您需要的是新的表类 R2013b:
>> x = {'Hi', 'Med', 'Hi', 'Low'; 'A', 'D', 'A', 'C'; '8', '3', '9', '9'; '1', '1', '1', '2'}';
>> t = cell2table(x)
t =
x1 x2 x3 x4
_____ ___ ___ ___
'Hi' 'A' '8' '1'
'Med' 'D' '3' '1'
'Hi' 'A' '9' '1'
'Low' 'C' '9' '2'
>> slice = t(strcmp(t.x2,'A'),:)
slice =
x1 x2 x3 x4
____ ___ ___ ___
'Hi' 'A' '8' '1'
'Hi' 'A' '9' '1'
>>
有关更多信息,请查看此处的表类
如果您想对表的所有唯一值执行此操作,您可以利用 cellfun:
>> slices = cellfun(@(value) t(strcmp(t.x2,value),:), unique(t.x2),'UniformOutput',false)
slices =
[2x4 table]
[1x4 table]
[1x4 table]
>> slices{:}
ans =
x1 x2 x3 x4
____ ___ ___ ___
'Hi' 'A' '8' '1'
'Hi' 'A' '9' '1'
ans =
x1 x2 x3 x4
_____ ___ ___ ___
'Low' 'C' '9' '2'
ans =
x1 x2 x3 x4
_____ ___ ___ ___
'Med' 'D' '3' '1'
>>
在这种情况下,您将 t.x2 的每个唯一元素传递给此函数。统一输出必须为假,以便 cellfun 不会尝试将表格连接在一起,而是将表格的每个切片放入自己的单元格中。