Ismember to replace value in vector?

6 visualizzazioni (ultimi 30 giorni)
Jona
Jona il 21 Dic 2017
Commentato: Jona il 21 Dic 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

Risposta accettata

Stephen23
Stephen23 il 21 Dic 2017
Modificato: Stephen23 il 21 Dic 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 Commento
Jona
Jona il 21 Dic 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.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Resizing and Reshaping Matrices in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by