【问题标题】:Convert a matrix of indices from a vector of values [duplicate]从值向量转换索引矩阵
【发布时间】:2017-07-26 21:44:39
【问题描述】:

我有一个包含值的向量:

c = [52, 26, 17, 39, 43];

和一个包含向量索引的矩阵:

B = [1 5 3 2;
     4 2 3 1;
     2 4 3 1;
     4 4 1 2];

在给定 B 中的索引的情况下,如何将 B 转换为包含向量 c 中的值的矩阵 B2?

B2 = [52 43 17 26;
      39 26 17 52;
      26 39 17 52;
      39 39 52 26];

嵌套的for循环实现了我想要的:

for i = 1:4
 for j = 1:4
  B2(i,j) = c(B(i,j));
 end
end

但是,这个问题似乎应该适合矢量化了。有没有办法在没有 for 循环的情况下做到这一点?

【问题讨论】:

    标签: matlab matrix indexing


    【解决方案1】:

    你可以简单地用B索引c

    B2 = c(B);
    

    【讨论】:

    • 更好的解决方案。 +1。无需重塑。