Initialize a field in all elements of a struct array
Show older comments
Hi,
I'm looking for a "one-liner" for initialization of a certain field in an existing struct array. I know that I may achieve this by calling struct(somefiledname,values), or something similar) but I want to initialize all of these additional fields for an existing array of structs, without changing the existing fields.
For example- I have a(1).field1=1; a(2).field1=2; a(3).field1=3;
and I want a one-liner which will add an additional field- "field2" to the "a" struct array (possibly- all ones, all zeros etc.).
Any such shortcut? Or the only way is to iterate through the array?
Thanks!
Accepted Answer
More Answers (2)
Try this out. It adds a field named 'field2' to each structure and allocates a vector of 4 zeros.
a = arrayfun(@(x) setfield(x, 'field2', zeros(1,4)), a);
James Tursa
on 1 Aug 2018
Another way using deal:
[a(1:numel(a)).field2] = deal(4);
Categories
Find more on Structures in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!