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 Commento

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.

Accedi per commentare.

Risposte (2)

madhan ravi
madhan ravi il 5 Dic 2018
Modificato: madhan ravi il 5 Dic 2018
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 Commento

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

Accedi per commentare.

Stephen23
Stephen23 il 9 Dic 2018
Modificato: Stephen23 il 9 Dic 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:

Tag

Richiesto:

il 5 Dic 2018

Modificato:

il 9 Dic 2018

Community Treasure Hunt

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

Start Hunting!

Translated by