2010-10-19 41 views
2

我使用matlab,并有一些困难。我试图将一个矩阵(A)的列与另一个矩阵(B)的列交换。例如:MATLAB交换两个不同矩阵的列

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 

有一种方法来告诉MATLAB中的开关,例如,第1列与乙3列?

回答

3

实际上,你可以在一个行,而不需要使用虚拟变量执行此列交换功能DEAL

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

+1不错,尽管对于这样一个简单的任务看起来像是一个矫枉过正的问题。 – Amro 2010-10-20 17:59:20

+1

@Amro:也许吧,但是DEAL是一个很有用的功能,通常我都会知道,所以我想我可能会把它列为另一个可能的解决方案。 ;) – gnovice 2010-10-20 18:12:30

1

使用

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

或者实际交换它们,你可以使用:

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

感谢您的回复,但这只需要将矩阵B中的内容放入A中。是否有将从B到A以及从A到B的列? – ajj 2010-10-19 22:47:58

+0

编辑我的回复。 – Tristan 2010-10-19 22:51:58

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