Initialize a field in all elements of a struct array

15 Ansichten (letzte 30 Tage)
shira rez
shira rez am 1 Aug. 2018
Bearbeitet: Stephen23 am 1 Aug. 2018
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!

Akzeptierte Antwort

Stephen23
Stephen23 am 1 Aug. 2018
Bearbeitet: Stephen23 am 1 Aug. 2018
Simpler:
[a.field2] = deal(1);
Or if you have multiple items to use:
C = {1,2,3};
[a.field2] = C{:};

Weitere Antworten (2)

Adam Danz
Adam Danz am 1 Aug. 2018
Bearbeitet: Adam Danz am 1 Aug. 2018
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
James Tursa am 1 Aug. 2018
Another way using deal:
[a(1:numel(a)).field2] = deal(4);

Kategorien

Mehr zu Structures finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by