Данная матрица симметрии 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
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?