dynamic naming of structures

If I have a variable x='name', how can I use x to build a structure with name 'name' that looks like:
name.a
name.b
No need to tell me about the hazards of dynamic variable naming.
Thanks.

 Accepted Answer

DrK
DrK on 17 May 2022
Actually, found my own answer:
x = 'name';
eval(sprintf('%s = struct;',x));
This creates a structure named 'name' and one can use the same eval format to add fields to it later.

7 Comments

How do you plan on using this variable downstream in your code? More "eval" statements everytime you want to use it?
That is a good point :-)
I guess that is what it takes, doesn't it?!
Is there a better way to do this?
Actually, I intend to form these structures into a table and later I can access then using the table. I guess this is analogous to the second level of structure that you proposed earlier, but since table was my plan all along, this eval method works better.
"Is there a better way to do this?"
Yes.
do tell
Thanks for the light reading. I think I am going to take this in the direction of indexing instead.
Thanks again for your help.

Sign in to comment.

More Answers (2)

Would it be acceptable to use x as a dynamic fieldname instead of the top level variable name? E.g.,
v.(x).a
v.(x).b
DrK
DrK on 17 May 2022
Not really. I know about the paranthesis around field names, but it creates another level of structure. The problem is that if I am creating the structure names inside my program, I don't know how to create the structures using those names.
Thanks for your response.

Categories

Products

Release

R2021a

Asked:

DrK
on 16 May 2022

Commented:

DrK
on 17 May 2022

Community Treasure Hunt

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

Start Hunting!