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

39 vues (au cours des 30 derniers jours)
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 commentaires
SS
SS le 13 Août 2019
Modifié(e) : SS le 13 Août 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

Connectez-vous pour commenter.

Réponse acceptée

Bruno Luong
Bruno Luong le 13 Août 2019
Modifié(e) : Bruno Luong le 13 Août 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 commentaires
Chuck Olosky
Chuck Olosky le 2 Août 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.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by