考虑一个单元格阵列,
H = [ {N1x1} {N2x1} {N3x1} ...{Nmx1} ]
如何(有效地)获得这些细胞的所有成对交叉点?
答案 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
循环。然后你可以保存一半的操作来说明结果的对称性。