Access data in cell and save as vector with corresponding variable name

hey there,
i am creating a cell with tables in it when i read a mf4 file. (see picture 1)
Thats the structure of each table (picture 2):
I can access each variable easily with the brackets and save them with the wanted name.
However I want to automate it.
For instance search for d2s and get the values out of the table and save it in a vector in double format with the vector named after the variable.
t does not need to be extracted.
Thanks in advance! HMU if you need more!

4 Comments

As usual the recommendation is: don't do this! Creating variables dynamically is a shot in your knee. See TUTORIAL: Why and how to avoid Eval
You can create a struct instead, which contains the wanted vectors.
I need the variables with the exact name in the workspace since they are needed for further calculations.
Is there any possibily to realize that?
Did you read the link? You find the "bad solution" there also as deprecated method, because it causes more trouzbles as it solves. But of course, if you really want to apply this, do it.
Could you then help me with creating the struct?

Sign in to comment.

 Accepted Answer

Data = struct(); % [EDITED], was: struct([]);
for k = 1:numel(tableCell)
C = tableCell{k};
NameList = T.Properties.VariableNames;
NameList = setdiff(NameList, {'t'}); % Ignore "t"
for iName = 1:numel(NameList)
Name = NameList{iName};
Data.(Name) = C.(Name);
end
end

3 Comments

Thanks!
I just received an error saying:
A dot name structure assignment is illegal when the structure is empty. Use a subscript on the structure.
in line Data.(Name) = C.(Name);

Sign in to comment.

More Answers (0)

Categories

Asked:

on 27 Sep 2022

Commented:

on 30 Sep 2022

Community Treasure Hunt

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

Start Hunting!