error to assign string in field struct's

>> SlippSource(2)
ans =
categorical
From instrument
Sis(:).Slipp
ans =
'From strategy'
ans =
'From strategy'
ans =
'From strategy'
>> class(Sis)
ans =
'struct'
>> size(Sis)
ans =
1 73
>> [Sis.SlippSource]=SlippSource(2)
Error using ()
Too many output arguments.

 採用された回答

Walter Roberson
Walter Roberson 2023 年 9 月 23 日

1 投票

Compare:
Sis(73).Slipp = 'example';
[Sis.SlippSource] = testfun();
Error using solution>testfun
Too many output arguments.
function output = testfun()
output = 123;
end

2 件のコメント

Walter Roberson
Walter Roberson 2023 年 9 月 23 日
Sis(73).Slipp = 'example';
[Sis.SlippSource] = deal(testfun());
whos Sis
Name Size Bytes Class Attributes Sis 1x73 8998 struct
function output = testfun()
output = 123;
end
Your Sis is a 1 x 73 struct. When you use [Sis.SlippSource] = SlippSource(2) then SlippSource(2) would have to be an expression that returns at least 73 output arguments.
Remember, when you have a non-scalar struct A then [A.B]=C is equivalent to coding [A(1).B, A(2).B, A(3).B, ... A(end).B] = C; which requires that C has enough outputs.
If you want to assign the same value to a particular field in each entry in the struct, then use deal like I show here.
piero
piero 2023 年 9 月 24 日
thanks..I didn't remember the word "deal"

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeStructures についてさらに検索

質問済み:

2023 年 9 月 23 日

コメント済み:

2023 年 9 月 24 日

Community Treasure Hunt

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

Start Hunting!

Translated by