2014-11-23 64 views
2

鉴于A是对称矩阵,大小为n和置换与给定索引的矩阵

A = 
     1 2 3 4 5    % The Position 

    1 [0 5 2 4 1 
    2 5 0 3 0 2 
    3 2 3 0 0 0 
    4 4 0 0 0 5 
    5 1 2 0 5 0] 

B是置换矩阵A的行和列

B = [2 4 1 5 3] 

输出,我想的行向量是

C = 
     2 4 1 5 3    % The New Position given by Matrix B 

    2 [0 0 5 2 3 
    4 0 0 4 5 0 
    1 5 4 0 1 2 
    5 2 5 1 0 0 
    3 3 0 2 0 0] 

我可以通过使用简单的for循环

01得到的输出
index = [2,4,1,5,3]; 
C = zeros(5,5); 
for i = 1:5 
    for j = 1:5 

     % Position of in square matrix n 
     % (i,j) = (i-1)*n + j 

     C(i,j) = A((index(i)-1)*5+index(j));  
    end 
end 

但是,如果我想排列大小为80x80的矩阵,那么我需要运行1600次以获得输出。 有没有简单的技巧来做到这一点,而不是使用for循环?

回答

4

您应该能够重新安排你的矩阵如下:

C = A(index,index); 

这根据索引变量独立排列各个维度。

+0

这不起作用,它给出了不同的输出。 – 2014-11-23 02:43:17

+0

它确实对我有用 – 2014-11-23 02:45:58

+1

@ ParagS.Chandakkar,对此感到遗憾。他是正确的,只是因为我的错字,然后得到另一个输出。 – karfai 2014-11-23 02:47:59