matching with data in cell array
Mostrar comentarios más antiguos
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 comentarios
Andrei Bobrov
el 1 de Jun. de 2017
Please attach small example with your data as mat - file.
Jan
el 1 de Jun. de 2017
@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.
Rya
el 1 de Jun. de 2017
Respuestas (2)
ES
el 1 de Jun. de 2017
[truefalse, index] = ismember('abc', {'xyz', 'abc', 'def', 'abc'})
This one?
12 comentarios
Rya
el 1 de Jun. de 2017
Editada: Walter Roberson
el 10 de Jul. de 2017
ES
el 2 de Jun. de 2017
just load your mat file.
load
Stephen23
el 3 de Jun. de 2017
It works for me, there should be no problem using this in an if statement:
>> load ANPR
>> ismember('EK94P8',ANPR(:,2))
ans =
1
Rya
el 3 de Jun. de 2017
@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
el 3 de Jun. de 2017
Stephen23
el 4 de Jun. de 2017
nnz(ismember('EK94P8',ANPR(:,2)))
Rya
el 4 de Jun. de 2017
Walter Roberson
el 10 de Jul. de 2017
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
Walter Roberson
el 10 de Jul. de 2017
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()
Jan
el 1 de Jun. de 2017
found = any(strcmp(TheNumber, TheListOfNumbers))
5 comentarios
Rya
el 1 de Jun. de 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
el 3 de Jun. de 2017
Rya
el 3 de Jun. de 2017
Categorías
Más información sobre Whos en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!