2017-06-07 17 views
0

我有單元陣列是如下:如何在Matlab中查找包含目標矢量的數值單元格的行?

S{1} = [10,20,30,40,50]; 
S{2} = [10,20,40,50]; 
S{3} = [10,50,510]; 
S{4} = [10,20,70,40,60]; 
S{5} = [20,40]; 

和,我有一個目標矢量:

T=[10,70] 

我需要找到細胞T是那些的子項的行。 對於上面的例子的結果是:4

因爲T是第4行

+0

只是在我的[你以前的非常類似的問題](https://stackoverflow.com/q/44408921/2586922) –

回答

3

的子項獲取針對T每個小區匹配的計數和查看哪些細胞具有匹配計數等於元素的數目T,表明那些細胞具有來自T的所有元素。這裏的假設是我們在每個單元中都有獨特的元素。

這裏的執行 -

find(cellfun(@(x) nnz(ismember(x, T)), S) == numel(T)) 

或由@Leander Moesinger建議我們可以得到每個元素的匹配關T跨在每個單元中的所有元素,然後簡單地使用all(),像這樣 -

find(cellfun(@(x) all(ismember(T,x)),S)) 
+0

的回答中找不到'x'和't'找到(cellfun(@(x)所有(ismember(T,x)),S))'做同樣的事快一點? –

+0

非常感謝你 –

+0

@LeanderMoesinger可愛!應該更快。謝謝!更新。 – Divakar

相關問題