2014-03-26 151 views
0

考虑一个单元阵列,I,其中单元阵列

I = { [i_1 ; i_2 ; .... ; i_n] [i_1,i_2 ; i_1,i_3; ...; i_n,i_n-1 ].. [ % all NCi combinations] ...} 

现在,我想找到每个单元的每行显示为不同细胞的另一行的一个子集的次数内查找的子集。

例如,我想要查找整个单元格数组中同一行中出现的次数i_1,i_2

I = {[1;2;3] [(1,2);(2,3);(1,3)] [1,2,3]} 

ans = 2。 (一次在第二个单元的第一行,一次在第三个单元的唯一一行)。

我一直在尝试不同的东西与这个成员,但我只是无法得到它。有任何想法吗?

+0

我没有正确地框出问题。我正在努力发布与我的问题更相关的内容。 – enigmae

回答

0

快速和肮脏的循环:

I = {[1;2;3],[1,2;2,3;1,3],[1,2,3]}; 
i_1 = 1; 
i_2 = 2; 

count = 0; 
for ii=1:numel(I), 
    for jj=1:size(I{ii},1) 
     if any(I{ii}(jj,:)==i_1) && any(I{ii}(jj,:)==i_2) 
      count = count+1; 
     end 
    end 
end 
1

这里有一个解决方案,它利用了ismember的“行”的说法(请注意,[1 2][1 2 3]这种方法可以找到)。

I = {[1;2;3],[1,2;2,3;1,3],[1,2,3]}; 
bait = [1 2]; 
baitCols = size(bait,2); 

%# identify cells with sufficient columns for comparison 
goodIdx = cellfun(@(x)size(x,2) >= baitCols,I); 

%# count all occurrences 
count = sum(cellfun(@(x)sum(ismember(x(:,1:baitCols),bait,'rows')),I(goodIdx))); 
+0

对我来说这是行不通的:'输入A和B必须是 '行'情况下具有相同列数的矩阵.' – thewaywewalk

+0

@thewaywewalk:好点,固定 – Jonas

+0

嘿。感谢你的回答。 但是,它似乎没有正常工作。例如: I = {[1,2; 3; 4],[1,2; 2,3; 1,3; 1,4; 2,4; 3,4],[1, 2,3; 2,3,4; 1,2; 4] [1,2,3,4]} 计数应该是4,但它只返回3. – enigmae