MATLAB Answers

0

Problem with find function

Asked by Aftab Ahmed Khan on 3 Nov 2015
Latest activity Edited by Stephen Cobeldick on 3 Nov 2015
Hello everyone, i am having two vectors and i want to find the index by doing so but it gives me an error. However it works fine when i do like this for numbers. Any help guys.
hbs_ort = {'North' 'North' 'South' 'South' 'East' 'West' 'West' 'East'}
cabs_ort = {'North'}
match=find(cabs_ort==hbs_ort)

  0 Comments

Sign in to comment.

Tags

2 Answers

Answer by Stephen Cobeldick on 3 Nov 2015
Edited by Stephen Cobeldick on 3 Nov 2015
 Accepted Answer

You can use strcmp to obtain the logical index (which often faster and more convenient to use than subscript indices):
>> hbs_ort = {'North' 'North' 'South' 'South' 'East' 'West' 'West' 'East'};
>> cabs_ort = {'North'};
>> X = strcmp(hbs_ort,cabs_ort) % logical index
X =
1 1 0 0 0 0 0 0
If you really need to subscripts:
>> find(X)
ans =
1 2
EDIT: if cabs_ort contains multiple values, then use ismember instead:
>> hbs_ort = {'North' 'North' 'South' 'South' 'East' 'West' 'West' 'East'};
>> cabs_ort = {'North','South'};
>> X = ismember(hbs_ort,cabs_ort)
X =
1 1 1 1 0 0 0 0

  4 Comments

Show 1 older comment
Thank you for the response but if cabs_ort contains two strings and i want to compare that with other vector.
cabs_ort = {'North','South'}
Guillaume
on 3 Nov 2015

Possibly, this is what you want:

hbs_ort = {'North' 'North' 'South' 'South' 'East' 'West' 'West' 'East'};
cabs_ort = {'North', 'South'};
ismember(hbs_ort, cabs_ort)
Then use ismember instead:
>> hbs_ort = {'North' 'North' 'South' 'South' 'East' 'West' 'West' 'East'};
>> cabs_ort = {'North','South'};
>> X = ismember(hbs_ort,cabs_ort)
X =
1 1 1 1 0 0 0 0
Note that the order of the input arguments to ismember is significant: it checks if the elements of A are members of B, where A and B are the first and second inputs respectively.

Sign in to comment.


Answer by TastyPastry on 3 Nov 2015

Modified code:
hbs_ort = {'North' 'North' 'South' 'South' 'East' 'West' 'West' 'East'};
cabs_ort = 'North';
match=strfind(hbs_ort,cabs_ort);
Returns variable match, which is a 1xn cell array containing vectors where 'North' is found in each cell of hbs_ort.

  0 Comments

Sign in to comment.