2017-06-07 18 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

相关问题