2010-02-27 115 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 

这是我觉得你真的很需要。你的“应该”不再是对称的,这是不对的。