1 ビュー (過去 30 日間)
Baba 2011 年 11 月 16 日
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 2011 年 11 月 16 日
i think i was looking for varname = genvarname(struct(1).name)


回答 (2 件)

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.
  1 件のコメント
Jonathan 2011 年 11 月 16 日
I agree.


Jonathan 2011 年 11 月 16 日
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);


Community Treasure Hunt

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

Start Hunting!

Translated by