2010-02-27 186 views
3

我對MATLAB很新,我很難找出解決問題的有效方法。任何幫助將不勝感激!!MATLAB - 矩陣組合

我有一個包含線之間的各種角度2D矩陣,看起來像

  L1 L2 L3 L4 L5 L6 
     L1 0 40 90 0 10 0 
     L2 40 0 0 5 40 20 
     L3 90 0 0 45 0 10 
     L4 0 5 45 0 10 15 
     L5 10 40 0 10 0 15 
     L6 0 20 10 15 15 0 

注意,每個對應列/行是相同的。我需要找到所有可能的組合,這些組合可以在矩陣中組織。即L1 L2 L3 L4 L5 L6,L1 L2 L3 L4 L6 L5,L1 L2 L3 L5 L6 L4等。我需要爲每個組合生成一個矩陣,以後再與模板值進行比較。

我嘗試使用

p = perms(1:6); 
tp = angles(p, :); 

只是交換矩陣的行每個組合。這工作正常,除了只有行交換每個組合,當列也需要交換。

   L1 L2 L3 L4 L5 L6     L1 L2 L3 L4 L6 L5 
     L1 0 40 90 0 10 0    L1 0 40 90 0 0 10 
     L2 40 0 0 5 40 20    L2 40 0 0 5 20 40 
     L3 90 0 0 45 0 10 should be L3 90 0 0 45 10 0 
     L4 0 5 45 0 10 15    L4 0 5 45 0 15 10 
     L6 0 20 10 15 15 0    L6 0 20 10 15 0 15 
     L5 10 40 0 10 0 15    L5 10 40 0 10 0 0 

回答

3

對於置換num,使用tp = angles(p(num,:),p(num,:))這兩者的置換的行和列,從而向你如置換[1 2 3 4 6 5]

tp = 

    0 40 90  0  0 10 
    40  0  0  5 20 40 
    90  0  0 45 10  0 
    0  5 45  0 15 10 
    0 20 10 15  0 15 
    10 40  0 10 15  0 

這是我覺得你真的很需要。你的「應該」不再是對稱的,這是不對的。