A is an m x n character array (I think that is the right term. It says m x n char in the workspace under value).
I want to find a certain row depending on the characters. So say I have a string s of size 1 x n. I want something like this:
find(strcmp(s,A(1:m,:)))
I messed around with ismember instead of strcmp a little too. Can't get it right. I only want it to return an indicator if the row matches the string s.
help is appreciated. Thanks.

 採用された回答

Matt Fig
Matt Fig 2012 年 9 月 13 日
編集済み: Matt Fig 2012 年 9 月 13 日

1 投票

A = ['asdf';'lelr';'wkre';'pope']
idx = all(ismember(A,'lelr'),2)
Now if you need linear indices rather than a logical index, use:
lidx = find(idx)

1 件のコメント

Jonathan
Jonathan 2019 年 1 月 29 日
This solution will match all strings that contain any of the characters in the string, not unique matches. See my answer below for an example and a soluton to fix this issue.

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

その他の回答 (2 件)

Jonathan
Jonathan 2019 年 1 月 29 日

1 投票

The answer by Loginatorist was incorrect for my problem that is I believe the same as described by the OP. Below is an example of when the solution gives wrong results:
Occupations = ['educator ';'doctor '];
all(ismember(Occupations,'doctor '),2)
all(ismember(Occupations,'educator '),2)
Output:
ans =
5×1 logical array
0
1
ans =
5×1 logical array
1
1
Clearly, the second match is wrong, as doctor contains all the characters contained within educator.
A solution that fixes this is to use cellstr and strcomp:
OccupationsCell = cellstr(Occupations);
strcmp('doctor',OccupationsCell)
strcmp('educator',OccupationsCell)
Output:
ans =
2×1 logical array
0
1
ans =
2×1 logical array
1
0

1 件のコメント

Stephen23
Stephen23 2019 年 1 月 29 日
Other options: use the 'rows' option:
>> Occupations = ['educator ';'doctor '];
>> ismember(Occupations,'doctor ','rows')
ans =
0
1
Use a cell array:
>> ismember(cellstr(Occupations),'doctor')
ans =
0
1

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

Edward Umpfenbach
Edward Umpfenbach 2012 年 9 月 13 日

0 投票

Great. Thanks.
Was just missing the "all" part.

カテゴリ

ヘルプ センター および File Exchange で Characters and Strings についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by