Adding a new field to a struct array
1,268 次查看(过去 30 天)
显示 更早的评论
Hey All! I'm trying to add a new field to a struct array inline. I have the following struct:
A(1).name = 'bob';
A(2).name = 'cindy';
newstruct = 'address'
How do I go about adding the a field A.address to the array struct with the field name being define din the newstruct variable? The existing array should then look like the following:
A(1).name = 'bob';
A(2).name = 'cindy';
A(1).address = [];
A(2).address = [];
0 个评论
采纳的回答
Walter Roberson
2018-1-27
A(1).(newstruct) = value;
If you have a cell array of contents to be put into existing entries, then you can use
[A.(newstruct)] = values_cell{:};
to set all of them at the same time.
2 个评论
sarah wentzel
2022-1-23
what are value in the first option and values_cell in the second? are those new variables?
Walter Roberson
2022-6-11
value in the above could be any variable or expression of any size or data type.
values_cell in the above would have to be a variable containing a cell array, in which the number of entries was the same as numel(A); each cell entry could be any data type or size.
More obscurely, values_cell could instead be the name of a true function (not function handle) for a function that could be called with no parameters, and which returned a cell array.
More obscurely still, values_cell could be the name of a class with a class constructor that could be invoked with no parameters, and the class defined subsref with {} operation, or defined the specialized method for overloading {}, so that the class name with no parameters defines an object and the {:} invoked whatever the {} operation was redefined as.
更多回答(2 个)
Kallam Haranadha Reddy
2018-1-27
A(1).name = 'bob'; A(2).name = 'cindy'; A(1).address = ' Flat No.502, Apple Towers,... 1st line, Ravindra Nagar, Guntur,Andhra Pradesh, India,PIN-522006'; A(2).address = ' Flat No.102, Balaji Towers,... 2nd line, Brodipet, Guntur, Andhra Pradesh, India, PIN-522006';
0 个评论
sarah wentzel
2022-1-23
编辑:sarah wentzel
2022-1-23
I created this cell
somecell = struct('Name', {'bob', 'lea', 'pat'}, 'Birth_year', {1990, 1988, 2021})
and now I want to add new information, favorite color. I know I can do it one by one like this:
somecell(1).color = 'blue'
somecell(2).color = 'red'
somecell(3).color = 'green'
But is there a way to do it with only one line? something like;
somecell (:,3).color = {'blue', 'red', 'green'}
thank you!
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!