conversion

i have a struct loaded and one of it's fields contains names such that struct(1).name contains "First" struct(2).name containis "Second" and so on
I would like to use these struct fields as a variable in my code. For example I'd like to set struct(1).name=content of some matrix so instead of saying X=[1;2;3] i'd like to say struct(1).name=[1,2,34] so First=[1,2,34] would be stored in the workspace. I just don't know how i need to convert struct(i).name to be able to use it

1 个评论

Baba
Baba 2011-11-16
i think i was looking for varname = genvarname(struct(1).name)

请先登录,再进行评论。

回答(2 个)

Jan
Jan 2011-11-16
Creating variables dynamically is prone to errors, hard to debug and slows down Matlab. Therefore it is recommended to avoid this.
A more efficient approach is using dynamic fieldnames:
data.(struct(1).name) = [1, 2, 34];
data.(struct(2).name) = [1, 2, 34];
Then the new variables are encapsulated in the struct data.
Jonathan
Jonathan 2011-11-16
Baba,
This will do what you described.
structVar(1).name = 'First';
structVar(2).name = 'Second';
makeVarFun = @(str, val) assignin('caller', genvarname(str), val);
for i = 1:numel(structVar)
varName = structVar(i).name;
makeVarFun(varName, i);
end

类别

帮助中心File Exchange 中查找有关 Structures 的更多信息

标签

提问:

2011-11-16

Community Treasure Hunt

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

Start Hunting!

Translated by