error to assign string in field struct's

2 次查看(过去 30 天)
>> 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
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 个)

类别

Help CenterFile Exchange 中查找有关 Data Type Conversion 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by