Assign array in field struct

2 ビュー (過去 30 日間)
Luca Re
Luca Re 2023 年 7 月 8 日
コメント済み: Luca Re 2023 年 7 月 9 日
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 件のコメント
Vilém Frynta
Vilém Frynta 2023 年 7 月 9 日
oh, i misunderstood. thanks
Luca Re
Luca Re 2023 年 7 月 9 日
already fixed thanks

サインインしてコメントする。

採用された回答

Paul
Paul 2023 年 7 月 9 日
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 件のコメント
Walter Roberson
Walter Roberson 2023 年 7 月 9 日
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 2023 年 7 月 9 日
thanks

サインインしてコメントする。

その他の回答 (1 件)

Vilém Frynta
Vilém Frynta 2023 年 7 月 8 日
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 件のコメント
Luca Re
Luca Re 2023 年 7 月 8 日
>> Sis.b = 1:82'
Scalar structure required for this assignment.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeStructures についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by