Dynamic struct names with strings.

Hi
I have got a 4x1 cell (named= RankFileNames) with the following chars
'0_1_workspace_20190410.mat'
'0_2_workspace_20190228.mat'
'1_1_workspace_sectNorm_20190228.mat'
'1_2_workspace_sectNorm_20190410.mat'
I would like create the following dynamic struct: RawData.(RankFileNames{1,1}).factorlist=[2 4 5 3] next interation
RawData.(RankFileNames{2,1}).factorlist=[2 4 5 3] and so one
However, Matlab returns the following error: Invalid field name: '0_1_workspace_20190410.mat'.
I am not interested in getting the apostrophes. Desired solution: RawData.0_1_workspace_20190410.mat.factorlist and RawData.0_2_workspace_20190228.mat.factorlist
Do you have any hints? thank you in advance.

 Risposta accettata

Walter Roberson
Walter Roberson il 24 Apr 2019

1 voto

You cannot do that. Field names cannot begin with a number or an underscore. You would need to prefix the file name with something.

2 Commenti

field names also can't have a .
The error message is entirely correct, your field names are invalid.
You could use matlab.lang.makeValidName to make valid field names out of your strings. This would change '1_1_workspace_sectNorm_20190228.mat' into 'x1_1_workspace_sectNorm_20190228_mat'
.. I still think it was a mistake for them to have gone from a simple function name such as genvarname() for the rather forgettable matlab.lang.makeValidName()

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by