Assign array in field struct

2 views (last 30 days)
Luca Re
Luca Re on 8 Jul 2023
Commented: Luca Re on 9 Jul 2023
class(Sis)
ans =
'struct'
length(Sis)
ans =
82
c=1
2
3
..
82
i want to create new field in struct
i want this:
Sis.b(1)=1;
Sis.b(2)=2;
..
Sis.b(82)=82;
now i want to semplify calculate
c=1:82
c=c'
>> [Sis.b]=c
Insufficient number of outputs from right hand side of equal sign to satisfy assignment.
  3 Comments
Vilém Frynta
Vilém Frynta on 9 Jul 2023
oh, i misunderstood. thanks
Luca Re
Luca Re on 9 Jul 2023
already fixed thanks

Sign in to comment.

Accepted Answer

Paul
Paul on 9 Jul 2023
Example data
Sis(1).a = 1;
Sis(2).a = 2;
Sis(3).a = 3;
c = [30 40 50];
Assign elements of c to new field of elements of Sis
temp = num2cell(c);
[Sis.b] = temp{:};
Sis.b
ans = 30
ans = 40
ans = 50
Or in one line
clear
Sis(1).a = 1;
Sis(2).a = 2;
Sis(3).a = 3;
c = [30 40 50];
[Sis.b] = table2struct(table(c')).Var1;
Sis.b
ans = 30
ans = 40
ans = 50
  3 Comments
Walter Roberson
Walter Roberson on 9 Jul 2023
When you use table() and pass in an expression (instead of a variable name) then table() automatically uses 'Var' followed by the column number as the name of the variable. So for example table([10;20]; [30;40]) would produce a 2 x 2 table with variables 'Var1' and 'Var2'

Sign in to comment.

More Answers (1)

Vilém Frynta
Vilém Frynta on 8 Jul 2023
Sis = struct();
Sis.b = 1:82'
Sis = struct with fields:
b: [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 … ]
Sis.b(1)
ans = 1
Sis.b(10)
ans = 10
Hope this helps.
  1 Comment
Luca Re
Luca Re on 8 Jul 2023
>> Sis.b = 1:82'
Scalar structure required for this assignment.

Sign in to comment.

Categories

Find more on Structures in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!