2014-12-21 57 views

回答

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

爲什麼'repmat'?你可以簡單的將A >> cellfun(@(x)isequal(x,V),S);'! – Shai

+2

@Shai,謝謝,我不知道。 – Rashid

+1

@Shai不能將Kamtal歸咎於這一個,他只是不知道,會在學習這些複雜功能時學習。然後,我發佈了一個沒有'repmat'的'cellfun'解決方案。那麼,輕鬆點他? :) – Divakar

1

你需要去在每個向量的設置和檢查,如果是一樣的矢量V

for i=1:length(S) 
    if (isequal(S{i},V)) 
     % V is in S 
    end; 
end; 
你解決 S用花括號 {}得到的值

採取通知細胞而不是細胞本身。

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)) 
+0

謝謝Divakar爲你的答案,我想你是指我以前的問題:) – bzak

+0

@bzak哈哈不,我想我是指這裏的問題:)。嚴重的是這個問題必須輸出什麼,全零? – Divakar

+0

@bzak認爲你的意思**解決方案中提到的問題案例#2 **? – Divakar

相關問題