2010-10-19 8 views
2

Im en utilisant matlab et j'ai de la difficulté. J'essaie d'échanger les colonnes d'une matrice (A) avec la colonne d'une autre matrice (B). Par exemple:MATLAB échanger des colonnes de deux matrices différentes

A =

4  6  5 
7  8  4  
6  5  9  
1  0  0  
0  1  0  
0  0  1  

B =

1  0  0  0  0  0 
0  1  0  0  0  0 
0  0  1  0  0  0 
0  0  0 -1  0  0 
0  0  0  0 -1  0 
0  0  0  0  0 -1 

est-il un moyen de dire Matlab pour passer, par exemple, la colonne 1 en A avec la colonne 3 en B?

Répondre

3

Vous pouvez réellement effectuer cette permutation de colonne dans une ligne et sans avoir besoin de variables muettes en utilisant la fonction DEAL:

[A(:,1),B(:,3)] = deal(B(:,3),A(:,1)); 
+0

+1 bien, même si cela semble être une surcharge pour une tâche si simple – Amro

+1

@Amro: Peut-être, mais DEAL est une fonction utile à connaître en général, alors j'ai pensé que je pourrais aussi bien le répertorier comme une autre solution possible. ;) – gnovice

1

Utilisez

A(:,1) = B(:,3); 

Ou pour les échanger en fait, vous pouvez utiliser:

dummy = A(:,1); 
A(:,1) = B(:,3); 
B(:,3) = dummy; 
+0

Merci pour votre réponse, mais cela ne prend que ce qui était dans la matrice B et le met dans A. Y at-il quelque chose qui va prendre la colonne de B à A, et de A à B? – ajj

+0

a édité ma réponse. – Tristan

4
tmp = A(:,1); 
A(:,1) = B(:,3); 
B(:,3) = tmp; 
Questions connexes