Create and populate field on existing structure. Impossible?

2 vues (au cours des 30 derniers jours)
MrGrady
MrGrady le 13 Sep 2013
Modifié(e) : Stephen23 le 17 Juin 2023
Hi all,
I have created a structure and populated it with data from a cell array:
MyStruct=struct('Field1',num2cell(DFullData{1,1}),'Field2',num2cell(DFullData{1,2}))
Fabulous:
MyStruct =
1x461 struct array with fields:
Field1
Field2
Note that
>> MyStruct(1)
ans =
Field1: 7.354373336826041e+05
Field2: 2.407360200100000e+10
>> MyStruct(2)
ans =
Field1: 7.354373336883913e+05
Field2: 2.319540190100000e+10
How on earth do I create a Field3 and populate it like above (obviously without using a loop)?
Everything I tried ("setfield" and every permutation of squared and curly brackets!) populates only the first element with the whole cell array.
>> MyStruct().Field3=num2cell(DFullData{1,5})
>> MyStruct(1)
ans =
Field1: 7.354373336826041e+05
Field2: 2.407360200100000e+10
Field3: {1x461 cell}
>> MyStruct(2)
ans =
Field1: 7.354373336883913e+05
Field2: 2.319540190100000e+10
Field3: []
What is the correct syntax to populate each element of Field3 with each element of the cell array? Thanks!

Réponse acceptée

Arthur
Arthur le 13 Sep 2013
Did you try this?
[MyStruct.Field3] = DFullData{:,5};

Plus de réponses (2)

Azzi Abdelmalek
Azzi Abdelmalek le 13 Sep 2013
n=numel(DFullData{1,5})
for k=1:n
MyStruct(k).Field3=DFullData{1,5}(k)
end

Azzi Abdelmalek
Azzi Abdelmalek le 13 Sep 2013
f=fieldnames(MyStruct)
g=struct2cell(MyStruct)
[n,m]=size(g)
g(n+1,1:m)=num2cell(DFullData{:,5})
MyStruct=cell2struct(g,[f;{'field3'}])
  1 commentaire
MrGrady
MrGrady le 16 Sep 2013
Thank you very much, this is a bit convoluted but does the job! I am surprised that we have to go to such lenghts to perform such a simple operation, you'd think Mathworks would have thought about it. Oh well... Thanks again :)

Connectez-vous pour commenter.

Catégories

En savoir plus sur Structures dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by