说我有一个矩阵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
如果没有循环,我怎么能这样做?
答案 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)