在 MATLAB 中检测单元格条目 Table
Detect cell entries in MATLAB Table
我有一个 Matlab table(新的 'Table' class),我们称它为 A
:
A=table([1;2;3],{'A';'B';'C'})
如您所见,有些列是双列,有些是单元格。
我想弄清楚哪些是细胞。
出于某种原因,没有 A.Properties.class
我可以使用,而且我似乎无法调用 iscell
。
"Matlab" 这样做的方法是什么?我是否必须遍历 table 的每一列才能找出它的 class?
一种方法-
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
如果第二个变量是单元格类型,您可以使用 iscell(A.Var2)
进行测试。更一般地说,您可以通过索引引用列:
for k = 1 : width(A)
disp(iscell(A.(k)))
end
我有一个 Matlab table(新的 'Table' class),我们称它为 A
:
A=table([1;2;3],{'A';'B';'C'})
如您所见,有些列是双列,有些是单元格。
我想弄清楚哪些是细胞。
出于某种原因,没有 A.Properties.class
我可以使用,而且我似乎无法调用 iscell
。
"Matlab" 这样做的方法是什么?我是否必须遍历 table 的每一列才能找出它的 class?
一种方法-
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
如果第二个变量是单元格类型,您可以使用 iscell(A.Var2)
进行测试。更一般地说,您可以通过索引引用列:
for k = 1 : width(A)
disp(iscell(A.(k)))
end