matlab - 用给定索引置换矩阵

标签 matlab matrix

给定 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 循环吗?

最佳答案

您应该能够按如下方式重新排列矩阵:

C = A(index,index);

这会根据索引变量独立地重新排列每个维度。

关于matlab - 用给定索引置换矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27085000/

相关文章:

matlab - 如何使用 Matlab 的 polyfit 获得正确的曲线拟合?

python - 需要帮助将 Matlab 的 bsxfun 转换为 numpy

r - 如何将值矩阵转换为二进制矩阵

matlab - 如何在matlab中直接创建逻辑矩阵

matlab - 我如何在matlab中模拟按钮点击

linux - 如何将矩阵中的空白值替换为0

r - 如何在R中堆叠多个矩阵

matlab - Octave 矢量化循环 : for i = 1:size(v, 1) v(i,y(i)) = 1;结尾

python - 以 CSR/COO 格式为存储在 Pandas DataFrame 中的分类数据的巨大特征向量创建稀疏矩阵

function - Matlab:在结构矩阵上应用函数