Accessing all fields within a struct level at once

If I have a struct A which looks like:
A.('one').('include') ; A.('two').('include'); A.('three').('dont include');
and so on, how can I directly check if 'dont include' is present in the third level of the structure without having to use a loop. Is this possible to achieve without implementing a loop?

2 commentaires

Voss
Voss le 19 Déc 2023
'dont include' is not a valid field name, so what does the struct really look like?
Rather than describing the struct, maybe it's better to save it in a .mat-file and upload it here (using the paperclip button).
Hi, I've attached the mat file

Connectez-vous pour commenter.

 Réponse acceptée

Stephen23
Stephen23 le 19 Déc 2023
Modifié(e) : Stephen23 le 19 Déc 2023
"Is this possible to achieve without implementing a loop?"
Not really, but you can hide the loop using STRUCTFUN:
A.one.include = 1;
A.two.include = 2;
A.three.dontinclude = 3;
F = @(s)isfield(s,'dontinclude');
structfun(F,A)
ans = 3×1 logical array
0 0 1

2 commentaires

Hi, this is how my mat file looks like in reality
"Hi, this is how my mat file looks like in reality"
Do you have another question?

Connectez-vous pour commenter.

Plus de réponses (1)

Nipun
Nipun le 21 Déc 2023
Modifié(e) : Nipun le 21 Déc 2023
Hi Vaishnavi,
I understand that you are trying to find if "dontinclude" is a structure property without using for loops.
One possible solution is to create a function which evaluates every level of structure to check if the property is present.
Here is an example code with the listed recommendation
funcCheck = @(struct)isfield(struct,'dontinclude');
structfun(funcCheck,A)
Returns a "n x 1" logical array, where "n" is the number of levels in the structure.
Link to documentation:
  1. STRUCTFUN : Apply function to each field of scalar structure - MATLAB structfun - MathWorks India
Hope this helps.
Regards,
Nipun

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by