我对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
答案 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
这是我认为你真正需要的。你的“应该”不再是对称的,这是不对的。