如何知道向量V
是否属于集合S
?
V=[3 7 5]
S={[1 3],[4 9 7 22 4 5],[2 66 4],[8 66 44 12 5 71],[100 45 88 7 1 5 9 73]}
答案 0 :(得分:3)
您可以使用cellfun
,
A = cellfun( @(x) isequal(x,V), S );
或
A = cellfun(@isequal,S,repmat({V},size(S)));
会给,
A =
0 0 0 0 0
和sum(A) > 0
将给出最终结果。
答案 1 :(得分:2)
问题案例#1:假设您要查找S
中的每个单元格是否至少有一个元素也存在于V
中,您可以使用此基于 arrayfun
的方法 -
out = arrayfun(@(n) any(ismember(S{n},V)),1:numel(S))
对于给定的输入,你会得到 -
>> out
out =
1 1 0 1 1
或基于 cellfun
的方法(虽然我会以arrayfun
为基础的方法来提高我的资金以获得更好的效果) -
out = cellfun(@(x) any(ismember(x,V)),S)
问题案例#2:如果您要查找V
与S
的每个单元格之间的完全匹配,则可以再次使用arrayfun
-
out = arrayfun(@(n) isequal(V,S{n}),1:numel(S))
答案 2 :(得分:1)
您需要检查集合中的每个向量,并检查它是否与向量V
相同:
for i=1:length(S)
if (isequal(S{i},V))
% V is in S
end;
end;
请注意,您使用大括号S
处理{}
以获取单元格的值,而不是单元格本身。