salut,
je voudrai savoir s'il existe une fonction qui permutte deux colonnes d'une même matrice
Version imprimable
salut,
je voudrai savoir s'il existe une fonction qui permutte deux colonnes d'une même matrice
Peux-tu préciser si tu veux faire une permutation que tu choisis ? aléatoire ?
Quelle taille fait ta matrice ?
une permutation que je choisit moi même : entre deux colonnes que je choisit; la matrice est de taille 5*15
salut,
essaie ceci:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 >> test=[1 2 5;5 8 4;5 4 7] test = 1 2 5 5 8 4 5 4 7 >> test(:,[3 1 2]) ans = 5 1 2 4 5 8 7 5 4 >>
ça marche mais ça reste une solution pour des matrices de petites tailles, car dans le cas où on a plusieurs colonnes c'est pas pratique d'écrire la liste des numéros de colonnes dans l'ordre souhaité.
J'ai trouvé cette solution
mais c'est une programmation manuelle, j'imagine que la fonction existe sur matlabCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 test=[1 2 5;5 8 4;5 4 7] test = 1 2 5 5 8 4 5 4 7 >> S=test(:,1); >> test(:,1)=test(:,2); >> test(:,2)=S; >> test test = 2 1 5 8 5 4 4 5 7
Bonjour,
Pour ton exemple tu peux faire de la façon suivante:
Ca doit donner le même résultat, reste à voir comment tu peux l'adapter à ta solution finale...Code:
1
2
3 test = test(:, [2 1 3]);
Bonne journée,
Duf
tu as raison, mais j'ai d'autres cas où la matrice contient plusque 50 colonnes. Alors pour ces cas existe-t-il une fonction qui permet la permutation?
Tu peux toujours faire la permutation seulement sur les indices concernés :
ou plus directementCode:
1
2
3
4
5
6
7 X = rand(3,8) idx = 1:size(X,2); idx([1 2]) = idx([2 1]); X(:,idx)
Code:
1
2 X = rand(3,8) X(:,[1 2]) = X(:,[2 1])
Salut!
Si c'est vraiment une matrice, et non un simple tableau, tu peux la multiplier par une matrice de permutation, mais je pense que les solutions qui t'ont été proposées jusqu'ici sont plus rapides.
Jean-Marc Blanc
merci Dut, c'est bien ça ce que je cherche!