How to define a structure fieldname from a cell contains a string value?

18 views (last 30 days)
Dear All:
I am having trouble to define structure fieldnames from a cell array that contains the names as string values:
select = [{'NAME'}, {'VALUE'};
{'alpha'}, 0.4;
{'sigmaL'}, 1;
{'beta'}, 0.98];
and in a loop I want to create a structure from the cell array (select) with field name as in the first column and value in the second column if certain criteria is met. I have tried setfield and struct command, but in all cases the 'fieldname' input does not like I reference to the cell array (eg: select(1,3)), and ask for a proper string within quotation marks.
I want to ask how to create a structure by referencing to cell arrays? (In my case is create something like structure.alpha = 0.4 by referencing to select?)
Thank you very much in advance for your help.
Cheers
Ben

Accepted Answer

Matt Fig
Matt Fig on 24 Apr 2011
Instead of using EVAL, use dynamic fieldnames....
select = [{'NAME'}, {'VALUE'};
{'alpha'}, 0.4;
{'sigmaL'}, 1;
{'beta'}, 0.98];
for ii = 1:size(select,1)
S.(select{ii,1}) = select{ii,2};
end
Now you have a structure S. You might get a warning because the fieldname alpha is the same as the MATLAB function ALPHA. Note that using CELL2STRUCT is preferred here, as Oleg shows...

More Answers (4)

Ben Wang
Ben Wang on 24 Apr 2011
Thank you all for your help! It solved my problem perfectly!
Cheers
Ben

Paulo Silva
Paulo Silva on 23 Apr 2011
select = [{'NAME'}, {'VALUE'};
{'alpha'}, 0.4;
{'sigmaL'}, 1;
{'beta'}, 0.98];
for a=2:size(select,1)
eval(sprintf('MyStruct.%s=%d',select{a,1},select{a,2}));
end
MyStruct
or
MyStruct=struct();
for a=2:size(select,1)
MyStruct=setfield(MyStruct, select{a,1}, select{a,2});
end
MyStruct

Walter Roberson
Walter Roberson on 23 Apr 2011
struct(select{3,1}, select{3,2})
Remember, select(1,3) is the (non-existent) third column of the first row of the array select.

Oleg Komarov
Oleg Komarov on 24 Apr 2011
cell2struct(select(2:end,2),select(2:end,1))

Categories

Find more on Structures in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!