Initialize a field in all elements of a struct array

15 vues (au cours des 30 derniers jours)
shira rez
shira rez le 1 Août 2018
Modifié(e) : Stephen23 le 1 Août 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!

Réponse acceptée

Stephen23
Stephen23 le 1 Août 2018
Modifié(e) : Stephen23 le 1 Août 2018
Simpler:
[a.field2] = deal(1);
Or if you have multiple items to use:
C = {1,2,3};
[a.field2] = C{:};

Plus de réponses (2)

Adam Danz
Adam Danz le 1 Août 2018
Modifié(e) : Adam Danz le 1 Août 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 le 1 Août 2018
Another way using deal:
[a(1:numel(a)).field2] = deal(4);

Catégories

En savoir plus sur Structures dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by