vlookup type matrix creating

1 view (last 30 days)
Hello, I would like to create a vlookup (excel) type operation that searches matrix A in matrix B and creates matrix C. How could I do it please in the most easy way?
A = [0 0 1 0.25;
0 1 1 0.75]
B = [0 0 1;
0 1 1;
0 1 1;
0 0 1;]
C = [0 0 1 0.25;
0 1 1 0.75;
0 1 1 0.75;
0 0 1 0.25;]
Thank you for any ideas!

Accepted Answer

Steven Lord
Steven Lord on 13 Feb 2020
Since this sounds like it might be a homework question, I'm only going to point you in the direction of a useful function: ismember (with the 'rows' option.)

More Answers (1)

Rafael Schwarzenegger
Rafael Schwarzenegger on 14 Feb 2020
This might do:
BB = zeros(4,4);
for i=1:2
temp = [A(i,1:end-1)==B]; temp = logical(prod(temp,2));
BB(temp,:) = repmat(A(i,:),sum(temp),1);
end
  1 Comment
Stephen
Stephen on 14 Feb 2020
The MATLAB way:
>> [~,X] = ismember(B,A(:,1:3),'rows');
>> C = A(X,:)
C =
0.00000 0.00000 1.00000 0.25000
0.00000 1.00000 1.00000 0.75000
0.00000 1.00000 1.00000 0.75000
0.00000 0.00000 1.00000 0.25000

Sign in to comment.

Products


Release

R2017b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!