2010-02-27 11 views
3

Je suis assez nouveau pour MATLAB et j'ai du mal à trouver une solution efficace à un problème. Toute aide serait grandement appréciée !!MATLAB - combinaisons de matrices

I ont une matrice 2D contenant divers angles entre les lignes qui ressemble à

  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 

Notez que chaque colonne/rangée correspondante sont identiques. J'ai besoin de trouver toutes les combinaisons possibles que les lignes pourraient être organisées dans la matrice. ie L1 L2 L3 L4 L5 L6, L1 L2 L3 L4 L6 L5, L1 L2 L3 L5 L6 L4, etc. J'ai besoin de générer une matrice pour chaque combinaison qui sera comparée avec les valeurs du modèle plus tard.

Je tenté d'utiliser

p = perms(1:6); 
tp = angles(p, :); 

d'échanger simplement les lignes de la matrice pour chaque combinaison. Cela fonctionne correctement, sauf que seules les lignes sont permutées pour chaque combinaison, lorsque la colonne doit également être permutée.

   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 

Répondre

3

Pour permutation num, utilisez tp = angles(p(num,:),p(num,:)) qui permute à la fois la ligne et la colonne pour donner votre exemple permutation [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 

qui est ce que je pense que vous avez vraiment besoin. Votre "devrait être" n'est plus symétrique, ce qui ne peut pas être juste.