How to set an indexed value in a matrix based on a

2019-07-18 02:57发布

Say I have a matrix A

A =
 0     1     2
 2     1     1
 3     1     2

and another matrix B

B =
 0    42
 1    24
 2    32
 3    12

I want to replace each value in A by the one associated to it in B.

I would obtain

A =
 42     24     32
 32     24     24
 12     24     32

How can I do that without loops?

2条回答
霸刀☆藐视天下
2楼-- · 2019-07-18 03:39

There are several ways to accomplish this, but here is an short one:

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

If you can assume that the first column of B is always 0:size(B,1)-1, then it is easier, becoming just reshape(B(A+1,2),size(A)).

查看更多
神经病院院长
3楼-- · 2019-07-18 03:51
arrayfun(@(x)(B(find((x)==B(:,1)),2)),A)
查看更多
登录 后发表回答