matching with data in cell array

i want to match the output with data in cell array, i want to check whether the number(output) lies in cellarray or not?

3 Comments

Please attach small example with your data as mat - file.
@Rya: Andrei asked for a small example. You have posted your complete code with images, documentation, logos, auto-save files, several fig and m-files. What do you expect? That we inspect all of this code only to answer this simple question? The screenshot of the GUI is not useful here also.
You asked for "number(output) lies in cellarray". Then please provide how the number is represented and the typical contents or the cell array. Any further information is a waste of time only.
the number is stored in variable (noPlate) and output shows in editbox
set(handles.edit1,'string',noPlate);
here is a cell array ('ANPR.mat')
now how to check whether the output no lies in cell array or not

Sign in to comment.

Answers (2)

[truefalse, index] = ismember('abc', {'xyz', 'abc', 'def', 'abc'})
This one?

12 Comments

I used this code
ANPR=['AED632' 'KPT295' 'AKH343' 'AFR420']; %cellarray
if ismember(noPlate,ANPR)
msgbox( 'The number is Registered in database','success');
else
errordlg( 'The number is not Registered in database','error');
end
here in this code i defined cell array, but in my case i want to load a cell array which is my database file('ANPR.mat') so please help me how to use database file in above case
just load your mat file.
load
Rya
Rya on 3 Jun 2017
Edited: Rya on 3 Jun 2017
i used this but it gives error, i m wrong somewhere
load ANPR
if ismember(noPlate,ANPR)
and what does this error means: Error while evaluating uicontrol Callback
It works for me, there should be no problem using this in an if statement:
>> load ANPR
>> ismember('EK94P8',ANPR(:,2))
ans =
1
what is (:,2)
@Rya: if you do not know what indexing is then you really really really need to do the introductory tutorials, which teach very basic and important MATLAB concepts (such as what indexing is):
Also this:
ANPR(:,2)
takes the second column of ANPR
Rya
Rya on 3 Jun 2017
Edited: Rya on 3 Jun 2017
I will, and this works thank you so very very much where should i vote u now??
Another query...
I want to find that how many times a specific number is being searched in cell array(ANPR) just to keep record that how many times a vehicle go through a system
load ANPR
>> ismember('EK94P8',ANPR(:,2))
nnz(ismember('EK94P8',ANPR(:,2)))
nnz(X) returns the number of nonzero elements in matrix X. how does sit works?
Note that you had
ANPR=['AED632' 'KPT295' 'AKH343' 'AFR420']; %cellarray
That does not create a cell array. You needed
ANPR={'AED632' 'KPT295' 'AKH343' 'AFR420'}; %cellarray
The suggested
nnz(ismember('EK94P8',ANPR(:,2)))
should be
nnz(ismember(ANPR(:,2), 'EK94P8'))
When you use ismember(A, B) then for each entry in A, a logical value (true or false) will be returned indicating whether that entry in A was found in B. So if you reverse the order like I show, then for each entry in your second column of ANPR, you are comparing it to the one value 'EK94P8', returning a logical value for each. The number of matches is the same as the number of places the logical value is true, which is the same as the number of places the logical value is non-zero. The number of places that a value is non-zero can be tested with nnz()

Sign in to comment.

found = any(strcmp(TheNumber, TheListOfNumbers))

5 Comments

I used this code
ANPR=['AED632' 'KPT295' 'AKH343' 'AFR420']; %cellarray
if ismember(noPlate,ANPR)
msgbox( 'The number is Registered in database','success');
else
errordlg( 'The number is not Registered in database','error');
end
here in this code i defined cell array, but in my case i want to load a cell array which is my database file('ANPR.mat') so please help me how to use database file in above case
Jan
Jan on 2 Jun 2017
Edited: Jan on 2 Jun 2017
@Rya: No, this is not a cell array. The comment is misleading:
ANPR=['AED632' 'KPT295' 'AKH343' 'AFR420']; %cellarray
You need curly braces instead of square brackets:
ANPR = {'AED632' 'KPT295' 'AKH343' 'AFR420'};
For searching a single string, strcmp is more efficient than ismember, which is thought to compare lists of strings.
Rya
Rya on 3 Jun 2017
Edited: Rya on 3 Jun 2017
i used this now, still it gives error
load ANPR
%found = any(strcmp(noPlate, ANPR))
if (strcmp(noPlate, ANPR) )
msgbox( 'The number is Registered in database','success','help');
else
errordlg( 'The number is not Registered in database','Error','modal');
end
error: Default string does not match any button string name
where is this button string name comes from i want to find a string is cell array (mat-file)
I m clear now @jan Thanq , will come up with new question :)

Sign in to comment.

Tags

Asked:

Rya
on 1 Jun 2017

Commented:

on 10 Jul 2017

Community Treasure Hunt

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

Start Hunting!