如何根据另一个矩阵的值在矩阵中设置索引值

时间:2013-10-25 19:15:22

标签: matlab matrix vectorization

说我有一个矩阵A

A =
 0     1     2
 2     1     1
 3     1     2

和另一个矩阵B

B =
 0    42
 1    24
 2    32
 3    12

我想将A中的每个值替换为B中与其关联的值。

我会得到

A =
 42     24     32
 32     24     24
 12     24     32

如果没有循环,我怎么能这样做?

2 个答案:

答案 0 :(得分:6)

有几种方法可以实现这一目标,但这里有一个简短的方法:

[~,ind]=ismember(A,B(:,1));
Anew = reshape(B(ind,2),size(A))

如果您可以认为B的第一列始终是0:size(B,1)-1,那么它就会变得更容易,变得只是reshape(B(A+1,2),size(A))

答案 1 :(得分:1)

arrayfun(@(x)(B(find((x)==B(:,1)),2)),A)