我正在处理以下形式的结构:
struct('num', 2,
'w1', 0.5,
'w2', 0.5 );
包含在数组中:
array = [struct1, struct2, ..., structN]
我想知道是否有可能自动找到所有结构对,如下所示:
[struct1 struct2
struct1 struct3
...
struct1 structN
struct2 struct3
...]
作为参考,我发现this question用于简单数组。
答案 0 :(得分:2)
除了显而易见的nchoosek
solution之外,我们还可以更具创造性地获得指数:
>> [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
取决于您希望索引的顺序。
答案 1 :(得分:0)
答案 2 :(得分:0)
您可以使用nchoosek
获取所有对的索引
result = array( nchoosek( 1:N, 2 ) );