Assign array in field struct

2 visualizzazioni (ultimi 30 giorni)
Luca Re
Luca Re il 8 Lug 2023
Commentato: Luca Re il 9 Lug 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 Commenti
Vilém Frynta
Vilém Frynta il 9 Lug 2023
oh, i misunderstood. thanks
Luca Re
Luca Re il 9 Lug 2023
already fixed thanks

Accedi per commentare.

Risposta accettata

Paul
Paul il 9 Lug 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 Commenti
Walter Roberson
Walter Roberson il 9 Lug 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'
Luca Re
Luca Re il 9 Lug 2023
thanks

Accedi per commentare.

Più risposte (1)

Vilém Frynta
Vilém Frynta il 8 Lug 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 Commento
Luca Re
Luca Re il 8 Lug 2023
>> Sis.b = 1:82'
Scalar structure required for this assignment.

Accedi per commentare.

Categorie

Scopri di più su Structures in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by