Ismember to replace value in vector?

6 Ansichten (letzte 30 Tage)
Jona
Jona am 21 Dez. 2017
Kommentiert: Jona am 21 Dez. 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

Akzeptierte Antwort

Stephen23
Stephen23 am 21 Dez. 2017
Bearbeitet: Stephen23 am 21 Dez. 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 Kommentar
Jona
Jona am 21 Dez. 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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Resizing and Reshaping Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by