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