Reputation: 45
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?
Upvotes: 2
Views: 138
Reputation: 30579
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))
.
Upvotes: 6