Adding a new field to a struct array
1,256 ビュー (過去 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!