如何知道一個向量V
是否屬於一組S
?Matlab:如何知道向量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]}
如何知道一個向量V
是否屬於一組S
?Matlab:如何知道向量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]}
您可以使用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
會給最終結果。
你需要去在每個向量的設置和檢查,如果是一樣的矢量V
:
for i=1:length(S)
if (isequal(S{i},V))
% V is in S
end;
end;
你解決
S
用花括號
{}
得到的值
採取通知細胞而不是細胞本身。
問題案例#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))
那麼必須在輸出? – Divakar