MATLAB Answers

Create a 1 x m Structure instead of a 1x1 Structure

4 views (last 30 days)
Ruger28
Ruger28 on 8 May 2020
Commented: Ruger28 on 8 May 2020
Hello,
Im tring to create a 1 x m structure instead of a 1x1. When doing the following, it creates a 1x1 struct
MySturcture.FirstField = [1:100]
MySturcture.SecondField = [1:100]
I would like to open the struct to the fields being side by side (1x2 structure), displaying all of the data, similar to the image in this question.
[FirstField] [SecondField]
1 1
2 2
3 3
etc.. etc..
Any help would be greatly appreciated.

  0 Comments

Sign in to comment.

Accepted Answer

Stephen Cobeldick
Stephen Cobeldick on 8 May 2020
S = struct('FirstField',num2cell(1:100), 'SecondField',num2cell(1:100))

  1 Comment

Ruger28
Ruger28 on 8 May 2020
Thanks, Stephen! This is exactly what I was looking for. Kind of confused why they have to be cells instead of a double, but definitely what I needed. Thanks again.

Sign in to comment.

More Answers (2)

Ameer Hamza
Ameer Hamza on 8 May 2020
Edited: Ameer Hamza on 8 May 2020
This is one of the way.
MySturcture(100).FirstField = [];
MySturcture(100).SecondField = [];
A = num2cell(1:100);
[MySturcture.FirstField] = A{:};
[MySturcture.SecondField] = A{:};

  1 Comment

Ruger28
Ruger28 on 8 May 2020
Thank you kindly, but Stephen's answer was a little simplier to implement. Thanks, though!

Sign in to comment.


Steven Lord
Steven Lord on 8 May 2020
Your second design looks less like a struct and more like a table.
x = (0:11).';
y = x.^2;
t = table(x, y)
If you wanted a new "field" (table variable) you can add them, using variables from the table and/or variables from the workspace as desired.
t.z = t.y - t.x/2
t.w = sinpi(x./4)

  0 Comments

Sign in to comment.

Products


Release

R2019b