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 件のコメント

Stephen23
Stephen23 2018 年 12 月 9 日
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.

サインインしてコメントする。

回答 (2 件)

madhan ravi
madhan ravi 2018 年 12 月 5 日
編集済み: madhan ravi 2018 年 12 月 5 日

0 投票

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 件のコメント

nadav silberman
nadav silberman 2018 年 12 月 9 日
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

サインインしてコメントする。

Stephen23
Stephen23 2018 年 12 月 9 日
編集済み: Stephen23 2018 年 12 月 9 日

0 投票

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:

カテゴリ

ヘルプ センター および File ExchangeStructures についてさらに検索

タグ

質問済み:

2018 年 12 月 5 日

編集済み:

2018 年 12 月 9 日

Community Treasure Hunt

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

Start Hunting!

Translated by