2014-11-23 4 views
2

Учитывая А является матрицей симметрии с размером п ипереставляют Матрица с заданным индексом

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 = [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] 

я могу получить выход, используя простой цикл

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 раз, чтобы получить выход. Есть ли какой-нибудь простой трюк, чтобы сделать это вместо использования цикла?

ответ

4

Вы должны быть в состоянии изменить свои матрицы следующим образом:

C = A(index,index); 

Сортирует каждое измерение в соответствии с индексной переменной самостоятельно.

+0

Это не работает, оно дает другой выход. –

+0

Он действительно работает для меня –

+1

@ ParagS.Chandakkar, жаль об этом. Он прав, только из-за моей опечатки, а затем получить еще один результат. – karfai

Смежные вопросы