Create new fields on structure from char array
15 次查看(过去 30 天)
显示 更早的评论
Hi, I have an struct with some char names, and I want each one to became a field in other structure. This is the structure with the names:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/170974/image.png)
This is the structure and the place where I want the names:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/170975/image.png)
I tried several things from Matlab Answers, but nothing works. For example:
arbitrage = struct('Exchanges',list_exchanges);
for ii = 1:15
newfield = coins(ii).coins;
arbitrage.(newfield) = 1;
%arbitrage = setfield(arbitrage,'newfield',[]);
%[arbitrage(:).newfield] = [];
end
Presents this error:
Scalar structure required for this assignment.
Error in arbitrage_bot_v0_1 (line 21)
arbitrage.(newfield) = 1;
Can someone help me? Thanks.
0 个评论
采纳的回答
Walter Roberson
2018-3-4
[arbitrage.(newfield)] = deal(1);
2 个评论
Walter Roberson
2018-3-5
arbitrage is a nonscalar struct according to the second image header line. arbitrage.(newfield) would undergo expansion as a comma separated list, as that expansion is what is defined for nonscalar struct indexed at a field (or for using {} on a nonscalar cell array with a nonscalar index). To assign to all of the comma expanded fields at the same time you need to list them in [] on the left side of an assignment.
The second half of the trick is using deal() to assign the same value to multiple variables.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Structures 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!