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

что то, что я думаю, что вам действительно нужно. Ваше «должно быть» не является более симметричным, что не может быть правильным.