Arrays 查找所有MATLAB结构对

Arrays 查找所有MATLAB结构对,arrays,matlab,struct,combinations,Arrays,Matlab,Struct,Combinations,我处理的结构形式如下: struct('num', 2, 'w1', 0.5, 'w2', 0.5 ); 包含在数组中: array = [struct1, struct2, ..., structN] 我想知道是否有可能自动找到所有结构对,如下所示: [struct1 struct2 struct1 struct3 ... struct1 structN struct2 struct3 ...] 作为参考,我找到了一些简单数组。试试 例如: a =

我处理的结构形式如下:

struct('num', 2,
       'w1', 0.5,
       'w2', 0.5 );
包含在数组中:

array = [struct1, struct2, ..., structN]
我想知道是否有可能自动找到所有结构对,如下所示:

[struct1 struct2
 struct1 struct3
 ...
 struct1 structN
 struct2 struct3
 ...]
作为参考,我找到了一些简单数组。

试试

例如:

a = [struct1, struct2, ..., structN];
allcomb(a(:))
可以使用获取所有对的索引

result = array( nchoosek( 1:N, 2 ) );
除了显而易见的,我们还可以更具创造性地获得指数:

>> [j,i] = find(tril(true(N),-1));
>> pairs = array([i(:) j(:)])

其思想是构建逻辑三角矩阵,并提取非零元素的行/列索引:

>> tril(true(5),-1)
ans =
     0     0     0     0     0
     1     0     0     0     0
     1     1     0     0     0
     1     1     1     0     0
     1     1     1     1     0

取决于索引的顺序

>> triu(true(5),1)
ans =
     0     1     1     1     1
     0     0     1     1     1
     0     0     0     1     1
     0     0     0     0     1
     0     0     0     0     0