Find the existence of a character from a struct

12 views (last 30 days)
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.)

Accepted Answer

Stephen23
Stephen23 on 8 Sep 2017
Edited: Stephen23 on 8 Sep 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 Comments
Asim Ismail
Asim Ismail on 8 Sep 2017
Thats what I was asking for, Thanks a lot again

Sign in to comment.

More Answers (1)

OCDER
OCDER on 8 Sep 2017
Edited: OCDER on 8 Sep 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 Comments
Asim Ismail
Asim Ismail on 8 Sep 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'?

Sign in to comment.

Categories

Find more on Structures in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!