MATLAB Answers

Expected one output from a curly brace or dot indexing expression, but there were 2 results.

1.002 views (last 30 days)
SS
SS on 13 Aug 2019
Commented: Chuck Olosky on 2 Aug 2020
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

SS
SS on 13 Aug 2019
Here is the data file, I renamed the Newtracks as S2 in the following code. The error is in line 104
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

Sign in to comment.

Answers (1)

Bruno Luong
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{:});

  2 Comments

SS
SS on 4 Oct 2019
I have tried your suggestion and it results in follwoing error:
Reference to non-existent field 'x2'.
I am unable to resolve the error since, x2 is already defined.
Chuck Olosky
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.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!