assigning value to a changing struct field

Hello, I'd like to asiign a value to a struct with changing fields, but get a 'dimension mismatch' error. my code is as follows:
gear_ytpe=['P' 'G'];
axis=['x' 'y' 'z']
for ii=1:2
for jj=1:3
statistics.Envelop.CF.gear_ytpe(ii).Diff.axis(jj)=1:1:1000
end
end
Thnks in advance,
Nadav

1 Comment

Note that in MATLAB the square brackets [] are a concatenation operator, so this:
axis = ['x' 'y' 'z']
is exactly equivalent to this:
axis = 'xyz'
MATLAB does not have a "list" operator.

Sign in to comment.

Answers (2)

gear_ytpe={'P', 'G'};
axis={'x' ,'y' ,'z'};
for ii=1:2
for jj=1:3
statistics.Envelop.CF.gear_ytpe{ii}.Diff.axis{jj}=1:1:1000;
end
end

1 Comment

thank you for your answer, but that doesn't solve my problem.
If you'll look in the struct after it is being created you'll notice the field "statistics.Envelop.CF.gear_ytpe". I don't want the field gear_ytpe. instead I want two fields - "P" and "G", which are the cells inside gear_ytpe variable

Sign in to comment.

Stephen23
Stephen23 on 9 Dec 2018
Edited: Stephen23 on 9 Dec 2018
ytpe = {'P','G'}; % more robust as cell array.
axis = {'x','y','z'}; % more robust as cell array.
for ii = 1:numel(ytpe)
fi = ytpe{ii};
for jj = 1:numel(axis)
fj = axis{jj};
statistics.Envelop.CF.gear_ytpe.(fi).Diff.axis.(fj) = 1:1:1000
end
end
See:

Categories

Tags

Asked:

on 5 Dec 2018

Edited:

on 9 Dec 2018

Community Treasure Hunt

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

Start Hunting!