MATLAB - 矩阵组合

时间:2010-02-27 07:50:24

标签: 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

1 个答案:

答案 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

这是我认为你真正需要的。你的“应该”不再是对称的,这是不对的。