MATLAB - 矩阵组合

3

我是MATLAB的新手,遇到了一个难以找到高效解决方案的问题。非常感谢您的帮助!

我有一个包含各种线之间角度的二维矩阵,看起来像:

            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个回答

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接