给定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循环?
答案 0 :(得分:4)
您应该可以按如下方式重新排列矩阵:
C = A(index,index);
这会根据索引变量独立重新排列每个维度。