Naming a struct with a variable?

Hi, I'm trying to sort some data into a struct by having a specific part of the struct name be variable. I have a mapping function that designates the name based on the index. This is a simplified version of what I'm trying to code:
AHAmap = [ 6 9 2 17]
S10.AHAmap(3) = 66;
My expectation being that the struct S10.2 equals 66 (or even better S10.AHA3 = 66. I've been stuck for a while so help is appreciated!

1 Comment

Adam Danz
Adam Danz on 18 Mar 2020
Edited: Adam Danz on 18 Mar 2020
"...by having a specific part of the struct name be variable"
Are you looking for a way to name the variable S10 dynamically?
This is not recommended. Avoid using dynamic variable names to name a structure at all cost. Here are reasons why.
If you're naming the fields, that's a different story (see Steven Lord's answer).

Sign in to comment.

 Accepted Answer

2 isn't a valid struct array field name. But you can do something like your second alternative using dynamic field names.
S = struct();
FN = "apple" + 2 + "c"
S.(FN) = 42 % equivalent to S.apple2c = 42
Search the documentation for "dynamic field names" for more information.

1 Comment

Saar Peles
Saar Peles on 18 Mar 2020
Edited: Voss on 30 Oct 2024
Holy [redacted], I think you've saved me. I appreciate the help!

Sign in to comment.

More Answers (0)

Categories

Products

Release

R2019a

Tags

Asked:

on 18 Mar 2020

Edited:

on 30 Oct 2024

Community Treasure Hunt

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

Start Hunting!