Create and populate field on existing structure. Impossible?

3 Ansichten (letzte 30 Tage)
MrGrady
MrGrady am 13 Sep. 2013
Bearbeitet: Stephen23 am 17 Jun. 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!

Akzeptierte Antwort

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

Weitere Antworten (2)

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

Azzi Abdelmalek
Azzi Abdelmalek am 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 Kommentar
MrGrady
MrGrady am 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 :)

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Structures finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by