2

说我有一个矩阵A

A =
 0     1     2
 2     1     1
 3     1     2

和另一个矩阵B

B =
 0    42
 1    24
 2    32
 3    12

我想用A与它相关联的值替换 in 中的每个值B

我会得到

A =
 42     24     32
 32     24     24
 12     24     32

没有循环我怎么能做到这一点?

4

2 回答 2

6

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

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

如果您可以假设 的第一列B总是0:size(B,1)-1,那么变得更容易,成为 just reshape(B(A+1,2),size(A))

于 2013-10-25T19:26:10.633 回答
1
arrayfun(@(x)(B(find((x)==B(:,1)),2)),A)
于 2013-10-25T19:27:54.157 回答