Ismember to replace value in vector?

6 views (last 30 days)
Jona
Jona on 21 Dec 2017
Commented: Jona on 21 Dec 2017
Hi
I have created matrix B, see a cut out below (it is actually 260 rows long). Matrix A is the result of calculation (also here a cut out since it is 8637 rows long).
Now I want to find where the rows of B are found in A. I use ismember for this, but the problem is that ismember gives me the value 1. I want ismember to find the index like this, but to give it the same number as the row.
I did this:
B=[0 1 1; 0 1 2; 0 1 3];
A=[0 1 4; 0 2 4; 0 1 2; 0 1 5; 0 1 3];
output=zeros(5,1);
out1 = ismember(A,B(1,:),'rows')
out2 = ismember(A,B(2,:),'rows')
out3 = ismember(A,B(3,:),'rows')
I would like my function to return:
new_output => [0; 0; 2; 0; 3]
Later I will have to loop this 260 times (for each row), but for now I need to find a way to assign a value to each index.
Any suggestions on how to do this?
Thank you in advance

Accepted Answer

Stephen23
Stephen23 on 21 Dec 2017
Edited: Stephen23 on 21 Dec 2017
Read the ismember help, the second output is all you need:
>> [~,idx] = ismember(A,B,'rows')
idx =
0
0
2
0
3
>>
This is why we tell people to read the help for every function that they use.
  1 Comment
Jona
Jona on 21 Dec 2017
Thank you, Stephen! It works. I will read the help more carefully next time. I just assumed that ismember was not the correct function, so I was already looking for something else.

Sign in to comment.

More Answers (0)

Categories

Find more on Resizing and Reshaping Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!