Find the existence of a character from a struct

3 visualizzazioni (ultimi 30 giorni)
There is a structure with multiple fields and one of them is LOC, for example
n=5;
for i=1:n
S(i).LOC='LL';
end
From this struct, can someone please help me to find:
1) Whether 'LL' exist in the field LOC or not?
2) And how many times it is repeated?
(Note: the above written code is not what Im working on, its just to give some idea.)

Risposta accettata

Stephen23
Stephen23 il 8 Set 2017
Modificato: Stephen23 il 8 Set 2017
Using a comma-separated list and strcmp makes this very simple:
>> S(1).LOC = 'LL';
>> S(2).LOC = 'X';
>> S(3).LOC = 'LL';
>> S(4).LOC = 'LL';
>> S(5).LOC = 'X';
>> strcmp({S.LOC},'LL') % the existence
ans =
1 0 1 1 0
>> nnz(strcmp({S.LOC},'LL')) % the number
ans = 3
or use strfind if 'LL' can be inside a longer string.
  4 Commenti
Asim Ismail
Asim Ismail il 8 Set 2017
Thats what I was asking for, Thanks a lot again

Accedi per commentare.

Più risposte (1)

OCDER
OCDER il 8 Set 2017
Modificato: OCDER il 8 Set 2017
I think this works. Not the most efficient, but gets the job done.
n=5;
for i=1:n
S(i).LOC='LL';
end
FoundLL = 0; %Counts how many LL's there in in S structure array
for j = 1:length(S) %Go over every structure in S
Fields = fieldnames(S(j)); %Find the fields in this structure
for k = 1:length(Fields) %Go over every field in S
if strcmp(Fields{k}, 'LOC') %If you have the LOC field name
CurValue = S(j).(Fields{k}); %Get the value of this field
if ~isempty(CurValue) && ischar(CurValue) && strcmp(CurValue, 'LL')
FoundLL = FoundLL + 1;
end
end
end
end
fprintf('Found this many "LL" in "LOC" field of structure S: %d\n', FoundLL)
  3 Commenti
Asim Ismail
Asim Ismail il 8 Set 2017
Thank you @Donald Lee, you actually combined both my questions into this single code. I wanted to do them separately. Anyway how to check just the existence of 'LL'?
OCDER
OCDER il 8 Set 2017
Yup, matlab if and for are slow.

Accedi per commentare.

Categorie

Scopri di più su Variables in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by