Ismember to replace value in vector?

13 ビュー (過去 30 日間)
Jona
Jona 2017 年 12 月 21 日
コメント済み: Jona 2017 年 12 月 21 日
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

採用された回答

Stephen23
Stephen23 2017 年 12 月 21 日
編集済み: Stephen23 2017 年 12 月 21 日
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 件のコメント
Jona
Jona 2017 年 12 月 21 日
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.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeResizing and Reshaping Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by