ismember for string matrix

I have two string matrices;
A=['c1' 'c ' 'b ' 'd9']'; %UNIQUELIST
B=['d9' 'c1']'; %ORIGINALLIST
I would like do find member of B in A, using:
[LIA,LOCB]=ismember(A,B);
and it returns
LOCB =
3
4
3
0
0
0
1
2
But I actually would like it to return matching row index like this:
LOCB =
2
0
0
1
Thanks for your help
Sam

回答 (2 件)

Sean de Wolski
Sean de Wolski 2014 年 11 月 26 日

0 投票

You need to make A and B cell arrays so that each string piece is a separate element (rather than a 1xn string. The fix is simple use {} instead of []
A={'c1' 'c ' 'b ' 'd9'}';
B={'d9' 'c1'}'
[LIA,LOCB]=ismember(A,B)

1 件のコメント

Sam
Sam 2014 年 11 月 26 日
that hit the nail on the head, thanks!

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

dpb
dpb 2014 年 11 月 26 日

0 投票

You've got string arrays here; use the 'rows' optional argument to treat them as such instead of as individual characters...
>> [~,loc]=ismember(A,B,'rows')
loc =
2
0
0
1
>>

3 件のコメント

Sam
Sam 2014 年 11 月 26 日
i guessed if i use
[~,loc]=ismember(cellstr(A),cellstr(B))
then it would safely do the same job?
dpb
dpb 2014 年 11 月 26 日
Did you try it and see???
Sean de Wolski
Sean de Wolski 2014 年 11 月 26 日
Probably, but converting to cells is heavier weight if you don't need them for other things.

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

カテゴリ

ヘルプ センター および File ExchangeData Type Conversion についてさらに検索

タグ

質問済み:

Sam
2014 年 11 月 26 日

コメント済み:

2014 年 11 月 26 日

Community Treasure Hunt

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

Start Hunting!

Translated by