2014-10-27 42 views
1

我處理結構形式:找到所有對MATLAB結構的

struct('num', 2, 
     'w1', 0.5, 
     'w2', 0.5); 

數組中包含的:

array = [struct1, struct2, ..., structN] 

我想知道是否可以自動全部找到對的結構,如下所示:

[struct1 struct2 
struct1 struct3 
... 
struct1 structN 
struct2 struct3 
...] 

作爲參考,我發現this question簡單ARRA YS。

回答

0

嘗試allcomb

例子:

a = [struct1, struct2, ..., structN]; 
allcomb(a(:)) 
0

您可以使用nchoosek讓所有對

result = array(nchoosek(1:N, 2)); 
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 

取決於何種順序要用於索引。