单元格数组中所有可能的单元格交点:MATLAB。

时间:2014-05-29 09:49:10

标签: matlab combinations

考虑一个单元格阵列,

H = [ {N1x1} {N2x1} {N3x1} ...{Nmx1} ] 

如何(有效地)获得这些细胞的所有成对交叉点?

1 个答案:

答案 0 :(得分:1)

不确定这会有多高效。

N = numel(H);
[ii jj] = ndgrid(1:N);
result = arrayfun(@(n) intersect(H{ii(n)},H{jj(n)}), 1:N^2, 'uni', 0);
result = reshape(result,N,N);

实施例

H = {[1 2 3], [2 3], [4 5]};

给出

result = 
    [1x3 double]    [1x2 double]    [1x0 double]
    [1x2 double]    [1x2 double]    [1x0 double]
    [1x0 double]    [1x0 double]    [1x2 double]
>> result{1,1}
ans =
     1     2     3
>> result{1,2}
ans =
     2     3
>> result{1,3}
ans =
   Empty matrix: 1-by-0

[..]

如果H是多维单元格数组,这也适用。


您还可以使用两个for循环。然后你可以保存一半的操作来说明结果的对称性。