Expected one output from a curly brace or dot indexing expression, but there were 2 results.
31 views (last 30 days)
Show older comments
Hi.I working with a code to manipulate some data and here are the lines which gives error
S12(m).x2(n)=S2(tn4).x(ts4) % line 104
S12(m).dx2(n)=S2(tn4).dx(ts4) % line 105
S12(m).z(n)=S2(tn4).y(ts4) % line 106
The error is,
Expected one output from a curly brace or dot indexing expression, but there were 2 results.
Error in data_man (line 104) S12(m).x2(n)=S2(tn4).x(ts4)
How can I fix this error?
3 Comments
Accepted Answer
Bruno Luong
on 13 Aug 2019
Edited: Bruno Luong
on 13 Aug 2019
In general you are not allow to assign multi-level structures with non-scalar indexing in one shot, you need to do in 2 steps.
% S12(m).x2(n)=S2(tn4).x(ts4)
x2 = {S12(m).x2};
x = {S2(tn4).x};
for k=1:length(x2)
x2{k}(n) = x{k}(ts4);
end
[S12(m).x2] = deal(x2{:});
3 Comments
Chuck Olosky
on 2 Aug 2020
This approach worked for:
names = {'a' 'b' 'c'};
dStruct = repmat(struct('name',''),size(names));
[dStruct.name] = deal(names{:});
Also works without "deal":
[dStruct.name] = names{:};
In other threads, there are discussions regarding "deal" being unnecessary in later releases.
More Answers (0)
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!