2014-03-26 204 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