MATLAB Answers

How to Store Variable Names for Struct Titles

16 views (last 30 days)
10B
10B on 10 Apr 2016
Commented: 10B on 13 Apr 2016
Hello Community,
I have a script to run various times that when the functions are used outputs a table and other data. Each time I run this, I would like to record the table as a new line in a struct, so I end up with several struct arrays with different data. I have this part covered - but what I am struggling with is getting the struct array to be named as I want ie, I want the struct to be named after the variables that are read in to a particular function - so perhaps this needs to be written as an extra line in the specific function?
The function is called: PODF The struct is called: ORMRes
For example, I call the function as:
[ORM, pStats, T] = PODF(CA, FCON, DF)
Where T is the table. I then write to the struct as follows:
ORMRes.(????)=T(:,:)
Which with a proper name in for the ????'s writes the table in to the struct, but, I want to be able to name the table recorded in the struct, the names of the variables that were used in the PODF function, in this example 'CA', 'FCON', 'DF'
Could anyone advise on the step that I am missing please? I have tried to use fullfile - but no luck. Or, if you think I am just going the wrong way about storing this data, then please just let me know your suggestions for improvement.
Thanks for your help.
Regards,
10B.

  2 Comments

Geoff Hayes
Geoff Hayes on 10 Apr 2016
10B - to be clear, you want to dynamically assign the name of the struct member based on the inputs used? So if I were to access this struct as
ORMRes.CA_FCON_DF
then I would get the T that is returned from PODF?
10B
10B on 11 Apr 2016
Hello Geoff,
Thanks for responding. Yes, I believe your description is correct. The bigger picture of what I am doing is creating data output from the PODF function, which will be run several times and with defferent combinations of input variables.
I need to store the various output tables 'T' in a struct so I can access them later to build a contingency table with the results.
I thought that to keep track of the input variables used to create each table, it would be best to assign them as the name for the struct member.
I'm quite inexperienced with writing code, and couldn't think of a better way to handle this - short of writing it all down with pen and paper!
If you have any insight, I would be very grateful for your views.
Kind regards,
10B.

Sign in to comment.

Accepted Answer

sam0037
sam0037 on 13 Apr 2016
Hi,
To dynamically name the fields of struct depending on the name of the inputs to the function, you can use the ' inputname ' function to get the names of the input. To illustrate this I have attached a script and a function file named 'PODF_Script.m' and 'PODF.m' respectively. The PODF function returns the name of the field to be used in the struct depending on the input names. Finally generate the field names from variables using this link .

  1 Comment

10B
10B on 13 Apr 2016
Thank you for your generous comments and code Abdus, this works perfectly.
I really appreciate it.
Kind regards,
10B.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!